ASP.NET4.0にWebアプリケーションがあります。主にオートコンプリートエクステンダーのルックアップ値のソースとして、asmxサービスを追加しました。
自分のマシンでローカルにデバッグすると、すべてが正常に機能します。ただし、WebアプリケーションをIIS 7.5に展開すると、サービスにデータを送信しようとするとHTTP404応答が返されます。
サービス定義を参照して、使用可能な操作を確認できます。ただし、テストページを使用してPOSTを使用してサービスをテストすると、HTTP404が再度受信されます。
何が起こっているのかわかりません。 Webアプリケーション内にasmxファイルを作成しました。これは、他の方法で動作している本番アプリケーションの仮想ディレクトリにデプロイされます。
おそらく、同じ仮想ディレクトリに展開されている.asmxファイルに問題がありますか?
これを見つけた後、同じエラーが発生しましたSO entry:
ハンドラーはIIS7.5統合パイプラインで404エラーを返します および
ASMX操作は404ですが、ASMXサービスの説明はありません、URLルーティングの問題ですか?
そして、asmxハンドラーをweb.configswebServerセクションに追加するソリューションを試しました。すべてうまくいきました。
<system.webServer> <validation validateIntegratedModeConfiguration = "false"/> <modulesrunAllManagedModulesForAllRequests = "true"/> <handlers > <add verb = "*" path = "*。asmx" name = "asmx" type = "System.Web.Script.Services.ScriptHandlerFactory、System.Web.Extensions、Version = 4.0.0.0、 Culture = neutral、PublicKeyToken = 31BF3856AD364E35 "/> </handlers> </ system.webServer>
Webサービスのアプリケーションプールを確認する必要があります。
Asp.netMVCではRouteConfig.cs
あなたはこの行を持つことはできません:
routes.RouteExistingFiles = true;
それは私を投げていましたhttp 404エラー。
JQueryを使用してasmxに投稿しましたが、テストシステムでは機能しましたが、本番サーバーでは失敗しました。データ型パラメーターがありませんでした:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({
//Data goes here
}),
dataType: "json", //<<<<<<<<< This is critical for the post to succeed in production. Without it we get a 404.
url: "/yourPathHere/yourEndpoint.asmx/methodName",
error: function (jqxhr, status) {
//error handler
},
success: function (data, status) {
//succes handler
}
});