jQuery を使用して、同じ Web サイトにある C# Web サービスに対して AJAX 呼び出しを実行しようとしています。何を見つけて試しても、500 エラーが発生し続けます。
Request format is unrecognized for URL unexpectedly ending in '/MyTest'.
Web ページからの jQuery AJAX 呼び出し
$.ajax({
type: "POST",
url: 'http://172.1.1.10/MYService/MyService.asmx/MyTest',
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data);
},
error: function (data, errorThrown) {
alert("Fail");
alert(errorThrown);
}
});
Web サービス (MyService.asmx) コード ビハインド
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string MyTest()
{
return "Hello World";
}
はい、上部に次のコメントがありません。
[System.Web.Script.Services.ScriptService]
Web ページを読み込もうとすると、「失敗」という警告ウィンドウが表示されます。これは、500 エラーを受け取ったときです (投稿の上部を参照)。
これを Web サービスの web.config に追加することを提案する人が多すぎます。
Web サービス (Web.config)
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
これを追加すると、次のアドレスでローカル マシンをヒットできます。
http://172.1.1.10/MYService/MyService.asmx/MyTest
「Hello World」の適切な応答が得られます。これを追加する前は、ローカルで同じ 500 エラー メッセージが表示されていました。
Web サービスと Web サイトの両方が、IIS の同じ Web サイトの下で、それぞれ独自のアプリケーションとして同じ IIS インスタンスにセットアップされます。これが true の場合に一般的に発生する 503 エラーや、File Not Found の 404 エラーが発生していないため、クロスドメインの問題ではないことはわかっています。
私はウェブを精査しましたが、これに対する解決策が見つからないようです。