AJAX を使用して ASMX Web サービスと通信する ASP.NET プロジェクトに取り組んでいます。ページの 1 つは、ScriptManager を使用して Web サービスの ASMX ファイルを参照します。絶対 URI を使用して参照されます。
最近、ASP.NET プロジェクトと Web サービスの両方を IIS Express を使用するように変更しました。それぞれが異なるポート番号を持つようになりました。この変更以降、ASP.NET プロジェクトのクライアント側コードは Web サービスにアクセスできません。
ASP.NET ページ用に生成された HTML コードには、Web サービスへの正しい参照が含まれています。
<script src="http://localhost:2837/Service.asmx/jsdebug" type="text/javascript"></script>
ただし、このスクリプトは、絶対 URL ではなく相対 URL を使用して Web サービスを参照するだけです。
Service.set_path("/Service.asmx");
したがって、Web サービスの代わりに ASP.NET アプリケーションのホスト名が使用されるため、Web サービス メソッドへの AJAX 呼び出しは失敗します。
POST http://localhost:2827/Service.asmx/WebServiceMethod 500 (Internal Server Error)
上記のポート番号は、Web サービスで使用されるものとは異なることに注意してください。上記のポート番号は、Web アプリケーションで使用されるものです。
HTTP 500 は、Web サーバーが次のように報告しているため生成されます。
次の場所に Web サービスが見つかりません: /Service.asmx
Web サービスが正しく参照されるようにするには、どうすればこれを修正できますか?