【问题标题】:Visual Basic Web API on IIS Returns 404 ErrorIIS 上的 Visual Basic Web API 返回 404 错误
【发布时间】:2020-10-20 07:06:12
【问题描述】:

我有一个托管在 IIS 8 上的 .NET Visual Basic Web 应用程序,它需要返回一个对 url 路径的 API 调用,例如 localhost/test

我定义了一个 ApiController 类:

<RoutePrefix("test")>
Public Class TestController Inherits ApiController

<Route("")>
<HttpGet>
Public Function GetMessage As String
  Return "Hello World"
End Function

我相信我已经正确配置了映射

Public Class WebApiConfig
  Public Shared Sub Register(ByVal Config as HttpConfiguration)
    Configuration.MapHttpAttributeRoutes()
  End Sub

在 Global.asax 中

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
  GlobalConfiguration.Configure(AddressOf WebApiConfig.Register)
End Sub

所以这是奇怪的部分,如果我在我的 Visual Studio 上本地运行它,则 url 路径有效。但是,如果我将它部署到 IIS,它会返回 404 错误。其他人有这个问题吗?


更新: 根据要求,我启用了错误详细信息,结果如下:


更新 2:


这是在 IIS 上安装 ASP.NET

【问题讨论】:

  • 请启用 IIS 详细错误消息并发布屏幕截图。了解哪个处理程序报告此 404 错误非常重要。如果静态文件处理程序报 404 错误,请确保在服务器管理器添加角色和功能中启用了 IIS asp.net 功能。
  • @JokiesDing 我听从了你的指示,看来你是对的。但是,我相信 ASP.NET 功能已启用。当我进入服务器管理器并添加功能时,我看到 ASP.NET 3.5 和 ASP.NET 4.5 已安装,除非这不是您所指的。
  • 请检查您的 IIS 处理程序。你在那儿看到 ExtensionlessUrlhandler 了吗?听起来 asp.net 处理程序没有正确导入。
  • @JokiesDing 所以我检查了处理程序映射(见图)并且存在 ExtensionlessUrlHandler。它是 ExtensionlessUrlHandler-ISAPI-4.0_XXbit。
  • @JokiesDing 所以我认为这不起作用的原因是因为我的应用程序处于经典模式。有没有办法解决这个问题?

标签: vb.net iis iis-8


【解决方案1】:

请确保 IIS NET Extensibility 4.5 也已安装。

https://docs.microsoft.com/en-us/iis/application-frameworks/scenario-build-an-aspnet-website-on-iis/configuring-step-1-install-iis-and-asp-net-modules

您的身边似乎缺少 ExtensionlessUrlHandler-Integrated-4.0

如果缺少此处理程序,IIS 一直返回 404。

【讨论】:

  • 我按照您提供的文档的步骤操作,但我认为它已经安装(见上图)。
  • 您在处理程序列表中看到集成处理程序了吗?如果未列出,您能否通过注册 在 applicationhost.config 处理程序部分?
  • 所以我检查了应用程序主机,那行就在那里。但是我注意到的一件事是前提条件。我的 Web 应用程序以经典模式运行: ... 这是否意味着,我无法在我的 Web 应用程序上运行缺少的处理程序。将 classicMode 添加到前提条件可以解决这个问题吗?
猜你喜欢
  • 2020-10-27
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
相关资源
最近更新 更多