web-dev-qa-db-ja.com

ASMXサービスは開発サーバーで動作し、IIS 7.5にデプロイされると404を返します

ASP.NET4.0にWebアプリケーションがあります。主にオートコンプリートエクステンダーのルックアップ値のソースとして、asmxサービスを追加しました。

自分のマシンでローカルにデバッグすると、すべてが正常に機能します。ただし、WebアプリケーションをIIS 7.5に展開すると、サービスにデータを送信しようとするとHTTP404応答が返されます。

サービス定義を参照して、使用可能な操作を確認できます。ただし、テストページを使用してPOSTを使用してサービスをテストすると、HTTP404が再度受信されます。

何が起こっているのかわかりません。 Webアプリケーション内にasmxファイルを作成しました。これは、他の方法で動作している本番アプリケーションの仮想ディレクトリにデプロイされます。

おそらく、同じ仮想ディレクトリに展開されている.asmxファイルに問題がありますか?

19
rsteckly

これを見つけた後、同じエラーが発生しました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> 
 
 
22
Frank

Webサービスのアプリケーションプールを確認する必要があります。

  • 正しい.NETバージョンを使用するように構成されていますか
  • 身元を確認する
  • 管理パイプラインモードを確認します。一部のアプリケーションでは、Classicを使用する必要があります
6

Asp.netMVCではRouteConfig.csあなたはこの行を持つことはできません:

routes.RouteExistingFiles = true; 

それは私を投げていましたhttp 404エラー。

0

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
        }
    });
0