我在ASP.NET巫现有项目工作的虚拟路径是基于包含点使用卡西尼与包含点
http://localhost/My.Awesome.WebClient/
这样的设置工作正常使用集成的Visual Studio的发展探析服务器的文件夹中,但是当我添加MVC内容并尝试访问它时失败(错误404资源未找到)。
http://msdn.microsoft.com/en-us/library/ee941656.aspx似乎解释了这个问题:
如果您在Visual Studio 2010中的文件系统网站,该网站是一个包含一个点在文件夹名称的文件夹中,URL(。)路由将无法可靠地工作。某些虚拟路径返回HTTP 404错误。这是因为Visual Studio 2010使用不正确的根虚拟目录路径启动Visual Studio Development Server(Cassini)。
然而,该项目是一个Web项目,而不是一个网站,它只有当我开始使用MVC失败。
这个问题可以很容易地复制:
- 文件 - 新建 - 项目 - ASP.NET MVC 3 Web应用程序
- 编辑项目设置,网址:使用Visual Studio开发服务器
- 设置虚拟路径的东西,包含一个圆点
- 尝试运行网站
有没有办法得到这个工作,除了使用IIS而不是卡西尼?
编辑:
我刚才找到了解决方法。它并没有真正在部署方案的工作,但它可能会找到解决办法帮助:
在我的Global.asax.cs文件:
routes.MapRoute(
"Default", // Route name
// Notice that I added the virtual path here
"My.Awesome.WebClient/{controller}/{action}/{id}", // URL with parameters
new { action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
// This is also new
routes.MapRoute(
"Root", // Route name
"", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
使用此解决方案,我的MVC的网站工作,但只有在以下网址:
http://localhost/My.Awesome.WebClient/My.Awesome.WebClient/
在Visual Studio vNext中,我认为应该删除Cassini以强制每个人使用IIS Express(尽管我个人建议每个人都使用本地IIS 7,如果可能的话IIS Express仍然不是IIS)。 – 2012-02-22 11:53:32
我不同意 - 卡西尼有它的地方。它重量轻,预装并且不会在远程端口上侦听。请参阅Scott Gu的博客以获取更多比较:http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx – Spikeh 2012-02-22 15:20:34
直到现在,我从未听说过“IIS Express”提供开发人员需要的所有功能。如果没有解决这个问题,我会试试看,谢谢。我也喜欢它不需要管理权限来调试。 – 2012-02-22 16:11:17