我将以下行添加到global.asax中的Application_Start方法:
var provider = new TestVirtualPathProvider();
HostingEnvironment.RegisterVirtualPathProvider(provider);
然而,在IIS6中部署此应用程序时,从未使用过“TestVirtualPathProvider”(它在ASP.NET开发服务器中)。
编辑:默认路径提供程序始终正确完成其工作并正确提供(非嵌入式)视图。问题很简单,我想使用自己的路径提供程序来提供嵌入式视图。所以,最初,我已经配置了以下通配符映射:
为什么这在IIS6中不起作用的任何可能原因? 是否还有其他因素(例如处理程序)可能影响使用的VirtualPathProvider?
答案 0 :(得分:1)
更新:您想要处理无扩展名URL的事实是一个重要的问题,在问题中没有提到。有关使用IIS 6设置MVC的帮助,请参阅此页面:http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx。这也应该涵盖你的场景。
我在这个帖子中回答的问题很可能是同一个问题:http://forums.asp.net/t/995633.aspx
基本上,请在web.config中添加:
<httpHandlers>
<add path="*" verb="GET,HEAD,POST" type="System.Web.StaticFileHandler" validate="true" />
</httpHandlers>
其他主题有一些细节可以解释为什么这是必要的。
答案 1 :(得分:1)
对于Custom VPP + IIS6 +预编译站点的组合,我们需要从AppInitailize()中添加VPP;
public static class AppStart
{
public static void AppInitialize()
{
// code to be executed automatically by the framework
}
}
另见:
http://sunali.com/2008/01/09/virtualpathprovider-in-precompiled-web-sites/
答案 2 :(得分:0)
我认为您需要在IIS6中使用ISAPI过滤器来拦截没有扩展名的URL。问题是ISAPI需要用c / c ++完成。
答案 3 :(得分:0)
IIS6配置为仅允许ASP.net管道处理某些扩展。 要了解如何修改请求,请按DocV检查帖子。