最初,我部署了网站,其中一些DLL设置为复制本地(如另一个SO帖子中的haacked建议)。在此失败后,我在服务器上安装了MVC 3软件包。
当我点击我的网站时,我得到了:
目录列表拒绝此虚拟 目录不允许内容 被列出。
我看到了haacked's blog,但现在已经差不多3岁了,其中一些不再适用了。在服务器上安装MVC 3之后,有谁知道我们需要做些什么才能使它工作?
更新
我在haacked的博客上发现了另一个link。显然,这应该工作(不需要做通配符映射)。我的网站虚拟目录设置为运行ASP.NET 4.0.30319,我已经安装了ASP.NET MVC 3,我正在运行IIS6(Windows Server 2003 R2,非常确定是IIS6)。
答案 0 :(得分:25)
虚拟目录设置为ASP.NET 4.0。而“默认网站”设置为运行ASP.NET 2.0。除了virt之外,我更改了“默认网站”以运行4.0。目录,它开始工作。原因对我来说是一个谜,但它确实有效。
答案 1 :(得分:22)
听起来你还没有设置通配符映射。您需要在IIS中配置映射,将所有请求发送到ASP.NET管道进行处理。由于您没有设置映射,因此它将请求解释为目录浏览(在您的配置中可能不允许)。
答案 2 :(得分:12)
我认为除非默认网站也设置为运行ASP.NET v4.0,否则ASP.NET 4 Extensionless URL功能不适用于iis v6上的虚拟目录。 对我来说,将ASP.NET v4.0设置为默认网站不是一种选择,因为它破坏了现有的v2.0虚拟目录webapps。 在mvc3虚拟目录webapp上添加通配符应用程序映射对我有用。 以下是我将mvc部署到iis6上的步骤列表。
答案 3 :(得分:0)
关于WILCARD应用程序地图:请注意,此选项会导致IIS拦截对Web服务器发出的每个请求。这包括对图像,经典ASP页面和HTML页面的请求。因此,启用通配符脚本映射到ASP.NET确实会产生性能影响。
其他解决方案:在带有IIS6的W2K3 SP2中,.NET Framework(2,3.5,4)。
转到注册表:
HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ ASP.NET \ 4.0.30319.0
如果必要,请创建DWORD EnableExtensionlessUrls,其值为0 。
然后从命令窗口执行:resetiis
从MVC3模板创建ASP.NET应用程序。
现在在global.asax设置路线如:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//routes.MapRoute(
// "Default", // Route name
// "{controller}.mvc/{action}/{id}", // URL with parameters
// new { controller = "Home", action = "Index", id = "" } // Parameter defaults
//);
routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { action = "Index", id = "" }
);
routes.MapRoute(
"Root",
"",
new { controller = "Home", action = "About", id = "" }
);
}
为.NET Framework 4创建AppPool并设置Web应用程序以使用此apppool。您可以使用Denis Bauer的ASP.NET版本切换器或使用Aspnet_regiis.exe。
结果:浏览器将de About页面显示为默认页面。