ASP.NET 4.5 MVC 4不适用于Windows Server 2008 IIS 7
很明显,我错过了一些东西,我无法在IIS 7上的Windows Small Business Server 2008上部署简单的ASP.NET MVC 4,.NET 4.5应用程序。
.NET框架4.5安装。
我是否应该在应用程序的应用程序池基本设置上看到该版本(4.5)? 在这个时候,我只有2.0和4.0,因为4.5就像只添加在4.0框架之上的3.5,我猜这是正常的。
当我浏览主页时,出现以下错误:
403 - 禁止:访问被拒绝。 您无权使用您提供的凭据查看此目录或页面。
当我请求名为Page / page / index的唯一控制器时,我得到404找不到页面。 像ASP.NET过程一样,永远不会得到http请求。
我可以请求一个简单的HTML页面。
应用程序池设置为.NET 4.0,并作为托管管道模式集成。
NETWORK SERVICE具有对目录的读/写访问权限。
当然,该应用程序从VS2012完美无缺地工作。
我对这里不合适的东西毫无头绪,搜索引擎查询帮助不大。
有没有人会有提示,这将非常感激。 谢谢
编辑
这些DLL已经在System.Web.Mvc,System.Web.Razor等bin文件夹中。
我创建了一个空的test.aspx页面,以确保asp.net工作进程正在获取请求,并且该页面正常。 所以看起来,MVC路由不起作用,虽然我有ASP.NET MVC 3 Web应用程序在该服务器上正常工作。
.NET 4.5安装后,我做了一个aspnet_regiis -iru,以防应用程序添加了一个aspnet_client文件夹,但这仍不能解决问题。
匿名身份验证在IIS身份验证部分启用,授权显示允许所有用户使用。
ASP.NET MVC 4已经安装,我只是做了修复以确保。
尽管安装了ASP.NET MVC 4,但请求/ page / index操作的404错误是由标准IIS返回的,而不是标准的aspnet错误。 所以看起来像MVC 4框架没有正确安装,我只是仔细检查并修复。 我在哪里可以继续调查?
@Mystere Man,我已经将匿名身份验证更改为使用应用程序池标识,停止,启动应用程序并仍然出现相同的错误。 它看起来好像ASP.NET MVC 4没有接受请求。
这是web.config的一部分:
<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.NETFrameworkv4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_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
我重新配对了Microsoft Framework .NET 4.5并修复了ASP.NET MVC 4,重新部署了简单的ASP.NET MVC 4应用程序,而且我仍然得到相同的行为。 我不知道接下来该做什么,所以我开始了一笔赏金,希望有人能帮我找到问题。
编辑2014/01/31
当我问这个问题时,我将runAllManagedModulesForAllRequests标记为接受的答案,因为它确实解决了问题。 但我当然不会在生产中使用它。 我问为什么我必须这样做,并没有任何答案。
比Martin Hollingsworth的回答真的是我正在寻找的,这是一个很好的方法来解决这个问题,而没有与runAllManagedModulesForAllRequests相关的所有性能问题。
我们几乎放弃了,并购买了一台新的Windows 2012服务器(ASP.NET MVC应用程序就像这样工作)。 在尝试Martin的解决方案之后,Windows 2008服务器正常运行。
如果您无法应用kb 980368中的QFE,而不是像接受的答案中所建议的那样使用runAllManagedModulesForAllRequests解决方案,则应该使用下面显示的preCondition =“”模块配置,以避免对静态内容产生负面影响,如博客文章asp.net MVC路由的工作原理及其对静态请求性能的影响,以及在获得MVC路由工作时不要使用runAllManagedModulesForAllRequests =“true”,以及一些关于答案的评论。
Scott Hanselman关于runAllManagedModulesForAllRequests的博客文章应该为这个论点增加一些权重。 Rick Strahl的帖子警告在IIS 7/8中runAllManagedModulesForAllRequests是我找到的设置之间交互的最佳解释。 模块preCondition属性上的IIS文档也值得一读。
请记住,如果您已应用QFE,则此配置更改不是必需的,因为此行为将成为默认配置。
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
尝试使用这个:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
...
</system.webServer>
编辑:
上述解决方案适用于.NET 3.5或更低版本。 如果您使用的是.NET 4.0或更高版本,则可能需要尝试安装IIS7 QFE
此外,这篇文章值得阅读,以了解这两者之间的差异。
我有类似的问题。 我尝试了许多这里描述的解决方案(Web.Config system.webServer配置条目等),但都无济于事。 最后,我发现了我的特定安装问题。 我将我的网站发布到本地文件系统,然后将这些文件复制到服务器上。 事实证明,Global.asax文件不是发布文件的一部分。 一旦我复制了该文件,错误就消失了。
链接地址: http://www.djcxy.com/p/74347.html上一篇: ASP.NET 4.5 MVC 4 not working on Windows Server 2008 IIS 7