2

我在 global.asax 中的 Application_Start 方法中添加了以下几行:

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

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

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

使用通配符映射截图

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

4

4 回答 4

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>

另一个线程有一些细节可以解释为什么这是必要的。

于 2010-09-02T00:53:24.803 回答
1

对于自定义 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/

于 2011-03-03T09:44:04.467 回答
0

我相信您需要在 IIS6 中使用 ISAPI 过滤器来拦截没有扩展名的 URL。问题是 ISAPI 需要在 c/c++ 中完成。

于 2010-09-03T02:44:08.910 回答
0

IIS6 配置为仅允许 ASP.net 管道处理某些扩展。要了解如何重定向请求,请查看DocV的帖子。

于 2010-09-06T18:53:27.750 回答