gpt4 book ai didi

asp.net - IIS 配置 - ASP.NET MVC 返回所有请求的默认文档

转载 作者:行者123 更新时间:2023-12-04 23:51:13 25 4
gpt4 key购买 nike

好的,所以我在 VS 2013 中构建了一个 MVC Web 应用程序。我已经能够通过本地计算机上的 IIS 成功托管这个应用程序,没有任何问题。但是我现在需要托管在远程机器上。我已按照与在本地计算机上相同的步骤操作,但我不断收到错误消息。

当我尝试浏览 Web 应用程序时,我收到一个错误 HTTP 错误 403.14 - Forbidden Web 服务器配置为不列出此目录的内容。但是,我创建了一个默认文档,因为此错误的详细信息告诉我,现在每次我尝试访问应用程序(localhost/MyWebApp)时,它都会转到该 default.html。

但是,当我指定要转到特定 Controller (例如 localhost/MyWebApp/Home)时,我收到 404 错误(HTTP 错误 404.0 - 未找到
您要查找的资源已被删除、名称已更改或暂时不可用。)

我目前尝试托管的机器由于各种原因没有安装 Visual Studio,但我已经安装了 ASP.NET MVC 3 和 .NET 4.5 Framework。远程计算机 IIS 上的默认网站也已经成功运行了一个 classic.net 应用程序。

我的想法是:

1 - 我缺少一些托管 asp.net mvc 应用程序所需的先决条件(可能是与 Visual Studio 一起安装的)

或者

2 - IIS 中的某些内容配置不正确。

欢迎任何建议,因为几个小时的凝视没有带来任何答案,而且我已经用尽了我对 IIS 的了解

编辑

已经弄清楚并将其标记为下面的答案。

最佳答案

runAllManagedModulesForAllRequests不应该用于这样的事情。
See here有关这方面的一些详细信息。

很可能,您的站点只缺少一个名为 UrlRoutingModule 的模块。 .在安装过程中,MVC nugets 将其安装到项目中。 There were some bugs about that, but has been fixed .

默认情况下,ASP 按扩展名选择内容处理程序,例如 URL 中的 ASPX 或 JPG。由于在 MVC 中通常没有这样的东西,因此 MVC 需要这个模块来正确执行路由。

问题是,路由似乎不适用于您的情况。

首先,确保该模块存在。打开 IIS 管理控制台,转到您的页面,打开模块部分并检查 UrlRoutingModule 是否在模块中列出。如果没有,请尝试重新安装 MVC 套件。或者像上面文章中介绍的那样手动将其添加到 webconfig 中。

如果该模块存在,请检查站点的结构究竟如何。

在 IIS 上,“站点”和“应用程序”之间存在细微差别。您可以将项目部署为整个站点,也可以部署为某个站点中包含的应用程序。

您有可能将项目部署为应用程序,并且该模块在该应用程序的范围内“打开”,而不是在整个站点上。如果是这种情况,您可以在实际站点的根目录中添加简单的额外 webconfig:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
</configuration>

这将在整个站点上启用 MVC 路由,并允许 http://example.com/myapplication/尽管没有设置任何“默认文档”并且在 URL 中没有任何文件扩展名,但仍能正确路由。

关于asp.net - IIS 配置 - ASP.NET MVC 返回所有请求的默认文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21777522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com