0

在 ASP.net MVC 中调用 Web 服务时出现问题,我执行以下操作

通过将服务引用添加到解决方案来添加 Web 服务,并且我也将 service.cs 文件包含到解决方案中,但是当我尝试在主控制器中创建对象时,出现以下错误

在 ServiceModel 客户端配置部分中找不到引用合同“服务”的默认端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此协定匹配的端点元素。

谁能帮帮我

谢谢

4

1 回答 1

1

这里发生了几件事。首先,您使用 SVCUTIL 为非 WCF 服务生成代理和配置设置 - .asmx 是旧版。我能够生成代理和配置设置,但要克服您遇到的错误,您需要调用WeatherHttpClient.

我不是 100% 确定,但这是我根据我观察到的想法。

原因是配置文件中定义了两个端点(一个用于 SOAP 1.1,一个用于 SOAP 1.2),并且由于两个端点都已命名,因此没有可供选择的默认端点。

当我使用时,var x = new WeatherHttpClient(new BasicHttpBinding("WeatherSoap"), new EndpointAddress("http://wsf.cdyne.com/WeatherWS/Weather.asmx"));我能够很好地创建代理。

但是,当我打电话时,GetCityForecastByZip我收到以下错误:

Server did not recognize the value of HTTP Header SOAPAction: http://ws.cdyne.com/WeatherWS/WeatherHttpGet/GetCityForecastByZIPRequest.

因此,我使用 WSDL.exe 以 .ASMX 样式生成代理。我将它包含在我的项目中,并且以下代码返回了一个结果(在包含对System.Web.Services- 我正在使用控制台应用程序的引用之后):

var x = new Weather();

ForecastReturn result = x.GetCityForecastByZip("91504");`

为了简单起见,我建议使用 WSDL.exe 为您的服务生成代理,因为它似乎更简单。

我还要补充一点,我所做的 MVC 很少,但我认为这不是 MVC 问题。我希望这可以帮助你。

于 2013-04-24T19:16:22.730 回答