显然,我遗漏了一些东西,我无法在.NET 7上的Windows Server2008上部署一个简单的WindowsMVC4,IIS4.5应用程序。
已安装.NET Framework4.5。
我是否应该在应用程序的应用程序池基本设置中看到该版本(4.5)?在这个时候,我只有2.0和4.0,因为4.5就像3.5,它只是在4.0框架之上添加,我想这是正常的。
当我浏览主页时,我得到了以下错误:
403 -禁止:访问被拒绝。您没有使用您提供的凭据查看此目录或页面的权限。
当我请求名为page / Page /index的唯一控制器时,我得到了404not found页面。例如,ASP.NET进程永远不会收到http请求。
我可以请求一个简单的HTML页面。
应用程序池设置为.NET 4.0,并作为托管管道模式集成。
网络服务对该目录具有读/写访问权限。
当然,这款应用在VS2012上运行得天衣无缝。
我对这里不正确的地方一无所知,搜索引擎查询也没有多大帮助。
有没有人能给点提示,我会非常感激的。谢谢
编辑
dlls已经在System.Web.Mvc、System.Web.Razor等bin文件夹中。
我创建了一个空的test.aspx页面,以确保asp.net工作进程正在接收请求,是的,该页面是正常的。所以看起来MVC路由不工作,尽管我有ASP.NET mvc3web应用程序在该服务器上工作正常。
在.NET 4.5安装之后,我做了一个aspnet_regiis -iru以防万一,在应用程序上添加了一个aspnet_client文件夹,但这仍然不能解决问题。
在IIS身份验证部分启用匿名身份验证,并对所有用户显示允许身份验证。
安装了ASP.NET MVC4,我刚刚做了一次修复以确保。
即使安装了IISMVC4,请求/page/index操作产生的404错误也是由标准ASP.NET返回的,而不是标准的ASP.NET错误。因此,看起来MVC4框架确实没有正确安装,我只是再次检查并进行了修复。我可以在哪里继续调查?
@Mystere Man,我已经将匿名身份验证更改为使用应用程序池身份,停止,启动应用程序,但仍然是相同的错误。如果ASP.NET MVC4不接受请求,看起来真的很像。
下面是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.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
我重新配对了微软框架MVC4.5并修复了ASP.NET .NET 4,重新部署了简单的ASP.NET MVC4应用程序,但我仍然得到了相同的行为。我不确定下一步该做什么,所以我发起了一次赏金,希望有人能帮我找到问题所在。
编辑2014/01/31
当我问这个问题时,我将runAllManagedModulesForAllRequests标记为可接受的答案,因为它确实解决了问题。但我肯定不会在生产中使用它。我问为什么我必须这样做,但没有任何答案。
Than Martin Hollingsworth answer确实是我正在寻找的,一个解决这个问题的好方法,而不是所有与runAllManagedModulesForAllRequests相关的性能问题。
我们几乎放弃了,买了一台新的Windows2012服务器( ASP.NET MVC应用程序就是从这台服务器上运行的)。在尝试了Martin的解决方案之后,Windows2008服务器开始工作了。
https://stackoverflow.com/questions/12495346
复制相似问题