You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Genexus生成REST Web Service调用报错:404及IHttpHandler Exception求助

GeneXus REST Web Service 404错误及IHttpHandler Exception排查解决

问题描述

使用GeneXus生成REST Web Service后遇到两类问题:

  1. 用SoapUI/Postman调用时返回404错误,尝试过两种URL格式:
    • http://myHostNameOrIPAddress/MyVirtualDir/ws_procName?parm=value
    • http://myHostNameOrIPAddress/MyVirtualDir/ws_procName.aspx?parm=value
      也尝试访问http://myHostNameOrIPAddress/MyVirtualDir/ws_procName.aspx?wadl验证服务可用性,同样失败。
  2. 在GeneXus Web面板用HttpClient调用时,服务器端抛出IHttpHandler Exception异常。

程序属性设置:

Expose as web server: TRUE
REST Protocol: TRUE
Generate OpenAPI interface: TRUE 

HttpClient调用代码:

&HttpClient.Host = "http://myHostNameOrIPAddress" 
&HttpClient.BaseUrl= "/MyVirtualDir/"
&HttpClient.Port   = 80 
&HttpClient.Secure = 0 
&HttpClient.AddHeader("Content-Type", "application/json; charset=utf-8") 
&JsonSend = &ws_sdtInput.ToJson() //&ws_sdtInput是导入OpenAPI后的输入参数SDT 

&HttpClient.AddString(&JsonSend.Trim()) 
&HttpClient.Execute("POST", "/messages/ws_procName.json") 
&JsonResponse = &ws_sdtOutput.ToJson()  //&ws_sdtOutput是导入OpenAPI后的输出参数SDT

&JsonResponse = &HttpClient.ToString() 

排查与解决步骤

一、确认REST服务的正确访问路径

GeneXus生成的REST服务有固定路由规则:

  • 非主程序无需加.aspx后缀,正确路径格式为:http://[主机/IP]/[虚拟目录]/rest/[程序名]
  • GET请求带参数示例:http://myHostNameOrIPAddress/MyVirtualDir/rest/ws_procName?parm=value
  • 验证服务元数据应访问http://myHostNameOrIPAddress/MyVirtualDir/openapi.json(开启Generate OpenAPI interface后生成,WADL是SOAP服务的描述格式,不适用于REST)

二、检查程序属性与生成配置

  1. 确认程序核心属性:
    • Web Server Class设为Rest(默认会自动设置,但需手动验证)
    • 程序归属Web环境,生成时选择了正确的Web目标(如.NET/Java)
  2. 重新生成整个解决方案,确保路由配置、REST处理程序等文件完整部署到虚拟目录

三、修复HttpClient调用代码错误

原代码存在多处逻辑问题,修正后版本:

&HttpClient.Host = "myHostNameOrIPAddress"  // 去掉http://前缀
&HttpClient.BaseUrl= "/MyVirtualDir/"
&HttpClient.Port   = 80 
&HttpClient.Secure = 0 
&HttpClient.AddHeader("Content-Type", "application/json; charset=utf-8") 
&JsonSend = &ws_sdtInput.ToJson() 

&HttpClient.AddString(&JsonSend.Trim()) 
&HttpClient.Execute("POST", "rest/ws_procName")  // 去掉/messages前缀和.json后缀

// 先获取响应内容,再反序列化到输出SDT
&JsonResponse = &HttpClient.ToString() 
&ws_sdtOutput.FromJson(&JsonResponse)

四、排查IHttpHandler Exception异常

该异常通常由以下原因导致:

  1. 应用程序池配置不匹配:比如.NET版本与GeneXus生成项目的目标版本不一致
  2. REST处理程序未注册:检查Web.config(.NET)或web.xml(Java)中是否存在GeneXus的REST处理程序映射
  3. 权限不足:应用程序池身份没有虚拟目录文件的访问权限
  4. 程序内部异常:开启GeneXus调试模式,查看服务器端详细错误日志定位具体问题

内容的提问来源于stack exchange,提问作者Valeria Carballo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:25:57