ASP.NET Web应用调用WCF服务报EndpointNotFoundException异常问题
问题背景
在ASP.NET Web应用消费WCF服务的场景下,触发按钮回发的服务调用流程时抛出EndpointNotFoundException异常,服务本地测试可正常访问,且Web.config中配置的服务访问URL与实际地址一致,抛出的完整异常堆栈为:
System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) +622 System.Net.HttpWebRequest.GetRequestStream() +320 System.ServiceModel.Channels.WebRequestHttpOutput.GetOutputStream() +115 [EndpointNotFoundException: There was no endpoint listening at https://<serverName>/<serviceName>/Autenticacion.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.] System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +357 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +979 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +114 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +149 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2755
针对性排查方向
(已排除服务本身未运行、Web.config配置URL拼写错误的前置场景)
- 绑定配置一致性校验:核对调用端与服务端的绑定参数是否完全匹配,常见不匹配场景包括:服务端启用HTTPS传输但调用端绑定未配置
security mode="Transport"、双方的消息编码格式、SOAP版本不一致——这类场景下浏览器可正常打开.svc服务页面,但SOAP请求无法被端点接收,就会触发端点找不到的报错。 - 运行环境连通性校验:不要用本地开发环境的连通性结果替代生产环境的连通性验证,直接在部署ASP.NET应用的服务器上,通过浏览器、
curl命令访问目标服务的WSDL地址,排查中间防火墙拦截、反向代理规则限制、目标SSL证书未被应用服务器信任、端口入站策略拦截等链路问题,这类问题会直接导致GetRequestStream阶段的底层请求失败。 - 服务端端点暴露校验:确认WCF服务端实际暴露的SOAP端点完整地址,和调用端配置的地址完全对齐,包括IIS部署的虚拟目录大小写、路径后缀、SOAP动作命名空间的匹配性;如果服务端未开启元数据发布,仅能通过浏览器看到默认服务页面,即使路径拼写一致也可能因为端点未对外暴露触发报错。
- 应用池权限校验:确认ASP.NET应用程序池的运行身份,是否具备访问外部HTTPS站点的出站权限,常见拦截场景包括服务器出站代理规则限制、本地系统策略禁止非交互进程发起HTTPS请求。
内容的提问来源于stack exchange,提问作者pcisrra76
相关产品推荐
相关产品推荐

