ここでいくつかのことが起こっています。まず、SVCUTIL を使用して、WCF 以外のサービスのプロキシと構成設定を生成しています。.asmx はレガシーです。プロキシと構成設定を生成できましたが、発生したエラーを克服するには、オーバーロードされたバージョンのWeatherHttpClient
.
100%確かではありませんが、これは私が観察したことに基づいて私が考えるものです。
その理由は、構成ファイルに 2 つのエンドポイント (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 の問題ではないと思います。これがお役に立てば幸いです。