MVC 3部署到IIS6

P.B*_*key 26 asp.net asp.net-mvc-3

最初,我使用一些DLL设置部署该站点以复制本地(如另一个SO帖子上的haacked建议).在此失败后,我在服务器上安装了MVC 3软件包.

当我点击我的网站时,我得到:

目录列表被拒绝此虚拟目录不允许列出内容.

我看到haacked的博客,但现在差不多3岁了,其中一些不再适用了.在服务器上安装MVC 3之后,有谁知道我们需要做些什么才能让它工作?

更新
我在haacked的博客上找到了另一个链接.显然,这应该工作(不需要做通配符映射).我的网站虚拟目录设置为运行ASP.NET 4.0.30319,我已经安装了ASP.NET MVC 3,我正在运行IIS6(Windows Server 2003 R2,非常确定是IIS6).

P.B*_*key 25

虚拟目录设置为ASP.NET 4.0.而"默认网站"设置为运行ASP.NET 2.0.除了virt之外,我更改了"默认网站"以运行4.0.目录,它开始工作.原因对我来说是个谜,但它确实奏效了.

  • 请注意,将默认网站更改为4.0会对我现有的许多虚拟目录造成严重破坏(仍设置为运行2.0).我不得不创建一个单独的网站来容纳我的基于4.0的virt.DIR的. (6认同)
  • 虚拟目录≠Web应用程序.虚拟目录:当物理位置与IIS位置不同时,相对于wwwroot.Web应用程序:在IIS管理员中单击"创建"时创建的内容.#PetPeeve #Pedantry (2认同)

Ada*_*ice 22

听起来你没有设置通配符映射.您需要在IIS中配置映射,将所有请求发送到ASP.NET管道进行处理.由于您没有设置映射,因此它将请求解释为目录浏览(在您的配置中可能不允许).

来自Haacked:

  1. 在网站的IIS属性中,单击"主目录"选项卡.
  2. 单击"配置..."按钮.在"映射"选项卡中,单击"插入..."
  3. "通配符应用程序映射"标签旁边的文本框中,键入"c:\ windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll"
  4. 取消选中标记为"验证文件是否存在"的框,单击"确定"

  • 记住第4步是最重要的一个!我们刚刚将一个MVC 3应用程序添加到"正常工作"(其他MVC3应用程序已经正常运行)IIS 6实例,并且忘记取消选中它并且在取消选中之前它不起作用. (3认同)
  • Windows Server 2003 R2确实是IIS6.如果没有看到你提到的链接,我认为Haacked一定是指IIS 7它"应该正常工作".AFAIK,IIS6总是需要通配符映射,无论是否是MVC3/.NET 4.0. (2认同)
  • 第3步:不是它C:\ WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll (2认同)

小智 12

我相信ASP.NET 4无扩展URL功能不适用于iis v6上的虚拟目录,除非默认网站也设置为运行ASP.NET v4.0.对我来说,将ASP.NET v4.0设置为默认网站不是一种选择,因为它破坏了现有的v2.0虚拟目录webapps.在mvc3虚拟目录webapp上添加通配符应用程序映射对我有用.以下是我将mvc部署到iis6上的步骤列表.

  1. ASP.NET v4已安装在Windows 2003服务器上
  2. 安装AspNetMVC3Setup.exe
  3. 将mvc3 webapp文件复制到服务器上,而不在bin文件夹中使用mvc3 dll
  4. 创建指向app文件夹的虚拟目录
  5. 将ASP.NET版本设置为4.0.30319
  6. 将通配符应用程序映射添加到c:\ windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll并取消选中验证文件是否存在