【问题标题】:Routing Doesn't Work After A Publish发布后路由不起作用
【发布时间】:2012-11-28 19:15:22
【问题描述】:

我有一个 .NET 4.0“Web 应用程序”又名“Web 表单”。在这个应用程序中,我有一个“Web API 控制器类”和我的“Global.asax”

在 Global.asax 中,我的“Application_Start”方法中有以下代码。

var config = GlobalConfiguration.Configuration;

config.Routes.MapHttpRoute(
name: "DefaultApi"
, routeTemplate: "api/{controller}/{id}"
, defaults: new { id = System.Web.Http.RouteParameter.Optional });

当我启动本地调试会话时,我可以很好地使用我的路由。如果我输入“/api/ZipCodes”,我会得到预期的 JSON 响应。

当我将项目发布到远程 IIS 服务器(发布方法:文件系统)时,该路由不再有效。我收到 404 错误。

我假设我需要在 IIS 上启用一个设置或某些东西,以便它识别和使用路由。

  • IIS 版本 7.0.6000.16386
  • .NET 应用程序池版本 4.0

  • 我的网站与其他 7 个以上的网站都位于“C:\inetpub\hosts”中。没有使用路由。

  • 我有一个带有“Hello World”的 Default.aspx,我可以在远程 IIS 服务器和本地调试会话上正确访问它。
  • 当我在本地机器上调试时,我可以输入“http://localhost:6358/api/ZipCodes”并获得我的 JSON 响应。如果我在远程机器“http://remoteserver.com/api/ZipCodes”上输入相同的网址,它会给我一个 404。

有人知道吗?

【问题讨论】:

    标签: c# asp.net .net


    【解决方案1】:

    如果您的 IIS 是最新的(我假设是 7.0 或更高版本),并且应用程序池配置为用户框架 4.0,则应该可以使用任何其他操作或配置。

    【讨论】:

    • IIS 7.0.6000.16386 ,应用程序池设置为 v4.0
    • 你在远程服务器上使用什么样的 url?如果您尝试浏览本网站上的其他内容是否有效?
    【解决方案2】:

    您的主文件夹设置正确吗?因为这就是今天发生在我身上的事。 它应该指向应用程序的根文件夹,而不是服务器的根目录。

    编辑:你能给我们你发布应用程序的文件夹吗?

    另外,如果您想知道如何设置 “主文件夹”(当向服务器发出请求时指向的文件夹,即:www.yoursite.com),请查看这个链接: https://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/a59a2665-9078-43ef-8b5a-5bf9bcacc95e.mspx?mfr=true

    总结:

    您必须将您的“主文件夹”设置为指向应用程序的文件夹,或者将您的应用程序文件放到预设文件夹(认为它的名称如下:LocalDrive:\Inetpub\Wwwroot

    【讨论】:

    • 阙?我不熟悉“主文件夹”。我刚刚设置了一个 IIS Web 应用程序,将它指向我的服务器 C:/ 上的一个文件夹,然后通过网络发布。
    • 尝试将您的站点名称输入为“文件夹”,即:www.example.com/example
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多