显然我遗漏了一些东西,我无法在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服务器工作正常.