簡體   English   中英

ASMX服務在開發服務器上運行,在部署到IIS 7.5時返回404

[英]ASMX service works on development server, returns 404 when deployed to IIS 7.5

我在ASP.NET 4.0中有一個Web應用程序。 我添加了一個asmx服務,主要是作為自動完成擴展器的查找值的源。

當我在本地機器上調試時,一切正常。 但是,當我將Web應用程序部署到IIS 7.5時,我在嘗試將數據發送到服務時收到HTTP 404響應。

我能夠瀏覽到服務定義,查看可用的操作。 然而,引人注目的是,當我使用測試頁面使用POST測試服務時,我再次收到HTTP 404。

我不確定發生了什么。 我確實在我的Web應用程序中創建了asmx文件,它部署在我正在運行的生產應用程序的虛擬目錄中。

是否存在將.asmx文件部署在同一虛擬目錄中的問題?

在遇到這個SO條目后,我剛剛遇到了同樣的錯誤:

處理程序在IIS7.5集成管道上返回404錯誤

ASMX操作404s,但是ASMX服務描述沒有,url路由問題?

並嘗試將asmx處理程序添加到web.configs webServer部分的解決方案一切都很好:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="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服務的應用程序池:

  • 是否配置為使用正確的.NET版本
  • 檢查身份
  • 檢查托管管道模式; 某些應用程序需要使用Classic

我使用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 } }); 

在Asp.net MVC RouteConfig.cs你不能擁有這一行:

routes.RouteExistingFiles = true; 

那是在給我帶來http 404錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM