使 ASP.MVC2/VS2010 应用程序在 IIS 7.5 中工作 [英] Getting an ASP.MVC2/VS2010 application to work in IIS 7.5

查看:19
本文介绍了使 ASP.MVC2/VS2010 应用程序在 IIS 7.5 中工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近下载了 VS2010 的 beta 2 并开始使用 ASP.NET MVC2.最初的开发是用 Casini 完成的,但现在我想从 IIS 7.5 运行应用程序(我运行的是 Windows 7).我已经安装了 IIS6 元数据库兼容性并以管理员身份运行 VS2010,因此我可以使用项目设置的Web"选项卡中的创建虚拟目录"按钮.这在 IIS 中创建了 Web 应用程序条目,但它不起作用.

I've recently downloaded beta 2 of VS2010 and started playing with ASP.NET MVC2. Initial development was done with Casini, but now I wanted to run the application from IIS 7.5 (I'm running Windows 7). I've installed the IIS6 metabase compatiblity and I run VS2010 as administrator so I can use the "Create Virtual Directory" button from the "Web" tab of the project settings. This created the web application entry in IIS, but it doesn't work.

当我进入主页时 (http://localhost/MyMvcApp/) 我收到一个 HTTP 403 错误.当我直接进入其中一个子页面(http://localhost/MyMvcApp/Home/)时,我获取 HTTP 404.

When I go to the main page (http://localhost/MyMvcApp/) I get a HTTP 403 error. When I go directly to one of the sub-pages (http://localhost/MyMvcApp/Home/) I get an HTTP 404.

所以我猜由于某种原因 URL 路由不起作用.我已经将 UrlRouting 作为模块和处理程序添加到 web.config.在我的搜索中,这是作为一些类似问题的解决方案提供的.但对我来说这仍然不起作用.

So I guess for some reason the URL routing isn't working. I've already added UrlRouting as a module and a handler to the web.config. In my searches this is offered as a solution for some similair problems. But for me this still doesn't work.

我的 web.config 中有趣的部分如下所示:

The interesting part of my web.config looke like this:

<system.web>
  <compilation debug="true" targetFramework="4.0">
    <assemblies>
      <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </assemblies>
  </compilation>
  <authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" />
  </authentication>
  <membership>
    <providers>
      <clear />
      <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
    </providers>
  </membership>
  <profile>
    <providers>
      <clear />
      <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
    </providers>
  </profile>
  <roleManager enabled="false">
    <providers>
      <clear />
      <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
      <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
    </providers>
  </roleManager>
  <pages>
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.Web.Mvc.Html" />
      <add namespace="System.Web.Routing" />
    </namespaces>
  </pages>
  <httpHandlers>
    <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler" />
  </httpHandlers>
  <customErrors mode="Off" />
</system.web>
<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true" >
    <remove name="UrlRoutingModule"/>
    <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </modules>
  <handlers>
    <remove name="MvcHttpHandler" />
    <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler" />
    <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </handlers>
  <httpErrors errorMode="Detailed" />
</system.webServer>

推荐答案

经过更多检查和尝试后,我注意到在打开或关闭 Windows 功能"对话框中缺少HTTP 错误"和HTTP 重定向".这很奇怪,因为据我所知,这是由 Microsoft Web 平台安装程序自动安装的.无论如何,在使用 MVC 时,HTTP 重定向"似乎是一项必备功能.所以在我安装它之后,一切似乎都运行良好.

After more checking and trying I noticed in the "Turn Windows features on or off" dialog that "HTTP Errors" and "HTTP Redirection" were missing. This is strange because as far as I can remember this was installed automatically by the Microsoft Web Platform Installer. In any case "HTTP Redirection" seemed like a need-to-have feature when working with MVC. So after I installed it everything seemed to work perfectly.

这篇关于使 ASP.MVC2/VS2010 应用程序在 IIS 7.5 中工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆