ASMX服务在开发服务器上运行,在部署到IIS 7.5时返回404

时间:2011-03-24 07:28:41

标签: asp.net iis-7 asmx

我在ASP.NET 4.0中有一个Web应用程序。我添加了一个asmx服务,主要是作为自动完成扩展程序查找值的源。

当我在本地机器上调试时,一切正常。但是,当我将Web应用程序部署到IIS 7.5时,我在尝试将数据发送到服务时收到HTTP 404响应。

我可以浏览服务定义,查看可用的操作。但是,当我使用测试页面使用POST测试服务时,我再次收到HTTP 404。

我不确定发生了什么。我确实在我的Web应用程序中创建了asmx文件,它部署在我正在运行的生产应用程序的虚拟目录中。

是否存在将.asmx文件部署在同一虚拟目录中的问题?

4 个答案:

答案 0 :(得分:22)

我在遇到这个SO条目后遇到了同样的错误:

Handlers returns 404 error on IIS7.5 integrated pipeline

ASMX operation 404s, but ASMX service description doesn't, url routing issue?

并尝试将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>


答案 1 :(得分:6)

您应该检查Web服务的应用程序池:

  • 是否配置为使用正确的.NET版本
  • 检查身份
  • 检查托管管道模式;某些应用程序需要使用Classic

答案 2 :(得分: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
        }
    });

答案 3 :(得分:0)

在Asp.net MVC中RouteConfig.cs你不能拥有这一行:

routes.RouteExistingFiles = true; 

这让我 http 404 错误。