IIS6中未使用自定义VirtualPathProvider

时间:2010-08-30 14:23:49

标签: asp.net iis-6 virtualpathprovider

我将以下行添加到global.asax中的Application_Start方法:

var provider = new TestVirtualPathProvider();
HostingEnvironment.RegisterVirtualPathProvider(provider);

然而,在IIS6中部署此应用程序时,从未使用过“TestVirtualPathProvider”(它在ASP.NET开发服务器中)。

编辑:默认路径提供程序始终正确完成其工作并正确提供(非嵌入式)视图。问题很简单,我想使用自己的路径提供程序来提供嵌入式视图。所以,最初,我已经配置了以下通配符映射:

Used wildcard mapping screenshot

为什么这在IIS6中不起作用的任何可能原因? 是否还有其他因素(例如处理程序)可能影响使用的VirtualPathProvider?

4 个答案:

答案 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检查帖子。