asp.net ASMX服务在开发服务器上工作,部署到IIS 7.5时返回404

6fe3ivhb  于 2023-02-10  发布在  .NET
关注(0)|答案(5)|浏览(273)

我在ASP.NET4.0中有一个Web应用程序,我添加了一个asmx服务,主要作为自动完成扩展程序的查找值的源。
当我在本地计算机上调试时,一切正常。但是,当我将Web应用程序部署到IIS 7.5时,我在尝试向服务发送数据时收到HTTP 404响应。
我能够浏览到服务定义,查看可用的操作。然而,很明显,当我使用测试页面通过POST测试服务时,我再次收到HTTP 404。
我不知道发生了什么,我确实在我的web应用程序中创建了asmx文件,并且它被部署在我的其他工作的生产应用程序的虚拟目录中。
在同一虚拟目录中部署.asmx文件是否有问题?

wqnecbli

wqnecbli1#

我刚刚遇到了同样的错误,在绊倒了这个SO条目:
Handlers returns 404 error on IIS7.5 integrated pipeline
ASMX操作404s,但ASMX服务描述没有,url路由问题?
并尝试了将asmx处理程序添加到web.configswebServer部分的解决方案,一切都很顺利:

<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>
a9wyjsp7

a9wyjsp72#

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

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

vngu2lb83#

我用jQuery发布到asmx,它在测试系统中工作,但在生产服务器上失败。我缺少datatype参数:

$.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
        }
    });
y53ybaqx

y53ybaqx4#

在Asp.netMVC RouteConfig.cs中,不能有以下行:

routes.RouteExistingFiles = true;

这是抛出我http 404错误。

ebdffaop

ebdffaop5#

使用IIS Express时出现404错误。我切换到使用完整版IIS:
(右键单击项目〉属性。切换到“服务器”下的“本地IIS”)

如果出现提示,请选择“是”以创建虚拟目录。(您也可以通过单击“创建虚拟目录”手动执行此操作)
确保将“项目URL”设置为Web服务的路径,并将“特定页面”设置为.asmx服务的名称。
在此之后,我得到了一个不同的404.3错误(请参见此处-"The page you are requesting cannot be served because of the extension configuration." error message
.asmx Web服务使用的是.NET 4.7.2,但我需要以下设置(在Windows中的“打开或关闭Windows功能”下),然后它就工作了(我已经展示了我用于IIS的其他主要设置):

相关问题