即使它是一个端点,它也会抛出 EndpointNotFoundException
Posted
技术标签:
【中文标题】即使它是一个端点,它也会抛出 EndpointNotFoundException【英文标题】:It throws EndpointNotFoundException even though it is an Endpoint 【发布时间】:2022-01-22 04:41:27 【问题描述】:为了获取报告,我们将数据从我们的主项目发送到报告服务。 主项目是用.net 3.1开发的。服务类型:WCF。要使用该服务,我们将其作为服务引用添加到项目中。我们可以使用服务的子方法如下。
WebService1SoapClient service = new WebService1SoapClient(WebService1SoapClient.EndpointConfiguration.WebService1);
var serviceOutput = await service.ReportsAsync(modelService);
当我在本地运行程序并想要得到报告时,我可以得到一个没有任何错误的报告。但是当我尝试在服务器端运行它时,出现以下错误。你能帮帮我吗?
System.ServiceModel.EndpointNotFoundException: There was no endpoint listening at http://xxx.xxx.com/WebService1.asmx that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
web.config 文件中的端点
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="ReportServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="ReportServiceBinding" maxReceivedMessageSize="4194304" transferMode="Streamed">
<readerQuotas maxArrayLength="4194304" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="ReportServiceBehavior" name="[ProjectName].ReportPages.ReportService1">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="ReportServiceBinding" contract="DevExpress.XtraReports.Service.IReportService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
【问题讨论】:
【参考方案1】:您可以尝试以下步骤: 1.可以在配置中定义端点地址。
<services>
<service behaviorConfiguration="ReportServiceBehavior" name="[ProjectName].ReportPages.ReportService1">
<endpoint address="http://xxx.xxx.com/WebService1.asmx" binding="basicHttpBinding" bindingConfiguration="ReportServiceBinding" contract="DevExpress.XtraReports.Service.IReportService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
2.我建议你检查一下服务器上是否有应用程序正在监听该端口,并且没有其他程序正在监听该端口,并且你没有设置任何防火墙规则来阻止该服务端口。
3.尝试通过在配置中将此参数设置为true来启用显示失败。 <serviceDebug includeExceptionDetailInFaults = "True" />
。希望这将提供更详细的信息。
【讨论】:
首先感谢您的回答。我将地址添加到端点,但它不起作用。此外,我们在服务提供商的服务器上托管报告服务。当我联系服务提供商时,他说防火墙设置没有问题。是否需要将 IncludeException 设置添加到主程序或服务中? 您可以尝试在 web.config 中将 includeExceptionDetailInFaults 设置为 true,或者您可以 [Enable Tracing] (docs.microsoft.com/en-us/dotnet/framework/wcf/diagnostics/…) 一个 wcf 服务来帮助您诊断确切的问题。你可以看看this post有没有帮助。 如你所说,我在 web.config 文件中添加了 includeException 设置。但错误信息没有改变。 你可以看看这些帖子,看看是否有帮助。social.msdn.microsoft.com/Forums/vstudio/en-US/… && social.msdn.microsoft.com/Forums/en-US/… social.msdn.microsoft.com/Forums/en-US/… && social.msdn.microsoft.com/Forums/vstudio/en-US/…以上是关于即使它是一个端点,它也会抛出 EndpointNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章
为啥即使我 .catch() Promise.all() 也会抛出异常?
即使使用 Scala 测试的 @PrepareForTest,PowerMockito 也会抛出 ClassNotPreparedException