【发布时间】: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 错误。其他人有这个问题吗?
【问题讨论】:
-
请启用 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 所以我认为这不起作用的原因是因为我的应用程序处于经典模式。有没有办法解决这个问题?