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

时间:2014-02-14 10:58:59

标签: asp.net asp.net-mvc asp.net-mvc-4 iis

好的,所以我在VS 2013中内置了一个MVC Web应用程序。我已经能够通过本地计算机上的IIS成功托管此应用程序,没有任何问题。但是我现在需要在远程机器上托管。我按照我在本地机器上执行的相同步骤进行操作但是我一直遇到错误。

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

但是,当我指定要转到特定控制器(例如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的了解

修改

已经弄明白并将其标记为下面的答案。

4 个答案:

答案 0 :(得分:3)

我终于在How to host MVC application in IIS 7.0?

中阅读了Elian Ebbings anwser

事实证明,我需要做的就是更改Web配置,以便模块部分将runAllManagedModulesForAllRequests设置为true。 e.g。

所以我的网页配置发生了变化

发件人:

<system.webServer>
    <modules>
      <remove name="FormsAuthenticationModule" />
    </modules>
</system.webServer>

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="FormsAuthenticationModule" />
    </modules>
</system.webServer>

答案 1 :(得分:3)

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上,&#34; site&#34;之间略有区别。和&#34;申请&#34;。您可以将项目部署为整个站点,也可以部署为某个站点中的应用程序。

您可能正在将项目部署为应用程序,并且该模块已打开&#34;在该应用程序的范围内,但不在整个站点上。如果是这种情况,您可以在实际站点的根目录添加简单的额外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/正确路由,尽管没有任何&#34;默认文档&#34;设置并且在URL中没有任何文件扩展名。

答案 2 :(得分:0)

您无法在MVC应用中使用“localhost / MyWebApp / Views / Home / Index.cshtml”等链接。试试“localhost / Home /”。并检查是否有任何网站在80号端口启动。如果MyWebApp只是在第80个端口工作的应用程序,请检查此端口是否已添加为远程计算机防火墙中的安全规则。

答案 3 :(得分:0)

ASP MVC 4(同时运行IIS并编辑代码):

在IIS运行时编辑.cs文件有时会导致问题,但可以运行IIS并编辑代码。

右键单击cshtml文件,然后单击“在浏览器中查看”。它将运行IIS,然后您可以编辑任何.cs文件并同时查看任何“视图”的输出。