显然我遗漏了一些东西,我无法在IIS7上的Windows Small Business Server2008上部署简单的ASP.NETMVC4,.NET4.5应用程序.

已安装.NET Framework 4.5.

我是否应该在应用程序的应用程序池基本设置上看到该版本(4.5)?目前,我只有2.0和4.0,因为4.5就像3.5,只是在4.0框架上加,我想这是正常的.

当我浏览主页时,我发现以下错误:

403-禁止:访问被拒绝.

当我请求唯一名为Page/Page/index的控制器时,我得到了404 not found页面.比如ASP.NET进程从未收到http请求.

我可以请求一个简单的HTML页面.

应用程序池设置为.NET4.0,并作为托管管道模式集成.

网络服务对该目录具有读/写访问权限.

当然,从VS2012开始,这款应用可以完美地运行.

我不知道这里有什么不对劲,搜索引擎查询也帮不了什么忙.

如果有人能给我一个提示,我将不胜感激.

Edit

DLL已经在类似bin文件夹的系统中.网状物Mvc,系统.网状物剃刀等.

我创建了一个空测试.aspx页面以确保asp.net worker进程收到请求,是的,页面正常.因此,MVC路由似乎不起作用,尽管我有ASP.NETMVC3Web应用程序在该服务器上运行良好.

在.NET4.5安装之后,我执行了一个aspnet_regiis-iru以防万一,在应用程序上添加了一个aspnet_client文件夹,但这仍然不能解决问题.

在IIS身份验证部分启用匿名身份验证,授权显示允许所有用户使用.

ASP.NETMVC4已安装,我刚刚做了修复以确保.

即使是ASP.NET MVC 4安装后,标准IIS返回请求/page/index操作的404错误,而不是标准aspnet错误.因此,实际上,MVC4框架似乎没有正确安装,我只是仔细判断并进行修复.我在哪里可以继续调查?

@Mystere Man,我已将匿名身份验证更改为使用应用程序池身份,停止、启动应用程序,但仍然存在相同的错误.它看起来真的像是ASP.NETMVC4没有接受请求.

这是网络的一部分.配置:

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

编辑2012/09/27

我重新配对了微软框架.NET 4.5并修复ASP.NETMVC4,重新部署简单的ASP.NET MVC 4应用程序,我仍然有同样的行为.我不知道下一步该怎么办,所以我开始悬赏,希望有人能帮我找到问题.

Edit 2014/01/31

当我提出这个问题时,我将runAllManagedModulesForAllRequests标记为可接受的答案,因为它确实解决了问题.但我肯定不会在生产中使用这个.我问我为什么要这样做,但没有任何答案.

Martin Hollingsworth多个答案正是我想要的,这是一个解决这个问题的好方法,而不存在与runAllManagedModulesForAllRequests相关的所有性能问题.

我们几乎放弃了,买了一台新的Windows 2012服务器(ASP.NET MVC应用程序就是从这个服务器上运行的).在try 了Martin的解决方案后,Windows 2008服务器工作正常.

推荐答案

如果你not能够应用QFE from kb 980368,而不是像公认的answer中建议的那样使用runAllManagedModulesForAllRequests解决方案,那么你应该使用下面显示的preCondition=""模块配置,以避免对静态内容造成负面影响,如博客文章How asp.NET MVC Routing Works and its Impact on the Performance of Static RequestsDon't use runAllManagedModulesForAllRequests="true" when getting your MVC routing to work所述,以及对答案的一些 comments .

Scott Hanselman's blog post about runAllManagedModulesForAllRequests应该给这个论点增加一些分量.Rick Strahl's post Caveats with the runAllManagedModulesForAllRequests in IIS 7/8是我所发现的设置之间相互作用的最好解释.module preCondition attribute上的IIS文档也值得一读.

请记住,如果您已应用QFE,则此配置更改不是必需的,因为此行为已成为默认行为.

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

Asp.net相关问答推荐

如何在 C# 代码中获取当前项目名称?

某些黑客能否从用户那里窃取 Web 浏览器 cookie 并在网站上使用该名称登录?

IIS Request.UserHostAddress 返回 IPV6 (::1),即使禁用了 IPV6

模型项的类型为 CookMeIndexViewModel,但需要类型为 IEnumerable 的模型项

Anti-Forgery Token 适用于不同的基于声明的用户

在 RedirectToAction 调用中传播 QueryString 参数

用于链接字符串中的 url 的 C# 代码

您对 Windows Workflow Foundation 有何体验?

在使用网络服务器加载它们之前,如何编译 Asp.Net Aspx 页面?

带有邮箱地址参数的 WebApi 方法从 HttpClient 返回 404

HTTP 错误 503.该服务在简单的 ASP.NET 4.0 网站下不可用

为什么aspx文件会返回404(找不到页面)

当用户使表单无效时单击取消按钮时,如何清除 MVC 客户端验证错误?

ASP.NET 上的 WebSockets 教程

单击按钮时播放哔声

如何判断用户代理是 ipad 还是 iphone?

单独装配和路由中的控制器

捕获的异常本身为 null !

在资源文件中使用 HTML

ASP.NET 网格视图与列表视图