在Visual Studio中,我的项目构建并运行没有问题。部署到Windows Server 2012 R2时,我遇到以下错误:
未为请求的网址配置默认文档 目录浏览未在服务器上启用。
我已经安装了所有4.5和其他Roles and Profiles
,已经将文件夹的权限授予所有人并阅读了每篇文章,并尝试实施每个建议都无济于事。
我没有选择,花了几周的时间,并且无法理解如何只是部署一个网站这么复杂。有人可以提供建议吗?感谢
修改 - 这是针对Windows Server 2012的,我尝试过建议的替代方案,例如将runAllManagedModulesForAllRequests
添加到我的web.config。
编辑部署时,我在发布模式下构建解决方案,并将bin,views,content和scripts文件夹复制到Windows Server。在IIS中,我然后将该文件夹设置为应用程序,确保分配了4.0 App Pool并仍然收到错误。
最终修改 发布允许我看到需要复制的结构。还有3个dll需要从Visual Studio本地复制:
以及Web.Config dependentAssembly更新时考虑到一些MVC4 dll,例如Unity.Mvc4指向MVC3二进制文件。
答案 0 :(得分:2)
此错误消息提供了有关问题的线索。 MVC站点不像WebForms那样依赖文档或网页,这是IIS的默认模式。它们依赖于一个特殊的处理程序,它处理用于将请求传递给应用程序的RESTful URL。
在您的web.config文件中,检查system.webServer部分中是否存在以下配置:
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
然后在Web服务器上,打开IIS管理器,在LHS的Connections面板中导航到代表您的应用程序的节点,然后双击Features View选项卡中的Handler Mappings图标。检查是否已启用ExtensionlessUrlHandler-Integrated-4.0处理程序(请参阅下文)。
如果这不起作用,请仔细检查您是否在服务器上启用了ASP.NET 4.5角色。有关说明,请参阅http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-using-aspnet-35-and-aspnet-45#TOC301258515。
还要确保应用程序在为.NET 4.0配置的AppPool下运行。
答案 1 :(得分:1)
我建议您通过右键单击解决方案资源管理器中项目上的,在Visual Studio中使用发布工具,以在网络上部署生成的文件。然后尝试以下方法:
aspnet_regiis -i
命令
bit命令提示符(具有管理员权限),然后部署它。我希望得到解决。
答案 2 :(得分:0)
似乎IIS没有将您的应用程序视为Web应用程序。它必须是MVC版本不匹配。
由于它被标记为MVC4,我们在MVC4中有3个内部版本。检查服务器安装的MVC版本。如果没有安装或者您不想在服务器中安装MVC,请为项目中引用的所有程序集设置CopyLocal = true并重新发布应用程序和在服务器中部署。