【问题标题】:Custom VirtualPathProvider not being used in IIS6IIS6 中未使用自定义 VirtualPathProvider
【发布时间】:2010-08-30 14:23:48
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 你用这个虚拟提供商做什么?
  • TestVirtualPathProvider 实际上什么都不做,它只是为了测试。我想从另一个程序集中加载嵌入式视图。我已经看过足够多的例子,但似乎无法在 IIS6 下工作......
  • 这很奇怪。我目前在 IIS6 上使用它没有问题。唯一的区别是:我没有在全球 asax 上注册提供商。出于测试目的,您可以尝试在其他地方进行,看看会发生什么。可能这根本无济于事,但我们可以先尝试一下……
  • 作为参考我给你这个网址support.microsoft.com/kb/910441你可能想验证你的场景。

标签: asp.net iis-6 virtualpathprovider


【解决方案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>

其他线程有一些细节解释了为什么这是必要的。

【讨论】:

  • 我也找到了那个链接。问题是,他们正在寻找“静态资源”,而我正在寻找无扩展名的 url (ASP.NET MVC)。我怀疑这就是问题所在......
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 是的,ISAPI 可以是 ASP.NET。使用通配符映射。
    • 我正在使用通配符映射(参见添加的屏幕截图)。或者您是否也在谈论 web.config 中的映射?
    • Isapi 扩展和 Isapi 过滤器的区别。您需要编写一个过滤器,将上游 URL/扩展名更改为由 asp.net 处理的过滤器。这样用户看不到扩展名,而 asp.net 看到 aspx。只需在 isapi 过滤器中添加几行代码即可完成。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-11
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 2013-06-18
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多