Пользовательский VirtualPathProvider не используется в IIS6 - PullRequest
2 голосов
/ 30 августа 2010

Я добавил следующие строки в метод Application_Start в global.asax:

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

И все же «TestVirtualPathProvider» никогда не используется при развертывании этого приложения в IIS6 (это происходит на сервере разработки ASP.NET).

Редактировать: поставщик пути по умолчанию всегда правильно выполнял свою работу и правильно обслуживал (не встроенные) представления.Проблема просто в том, что я хочу использовать свой собственный поставщик пути для предоставления встроенных представлений.Итак, изначально у меня уже было настроено следующее сопоставление с подстановочными знаками:

Used wildcard mapping screenshot

Какие-нибудь возможные причины, почему это не работает в IIS6?Существуют ли другие факторы (например, обработчики), которые могут повлиять на используемый VirtualPathProvider?

Ответы [ 4 ]

1 голос
/ 03 марта 2011

Для комбинации Custom VPP + IIS6 + Прекомпилированный сайт нам нужно добавить VPP из AppInitailize ();

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/

1 голос
/ 02 сентября 2010

ОБНОВЛЕНИЕ: тот факт, что вы хотите обрабатывать URL без расширений, является важным моментом, который не упоминается в этом вопросе. Пожалуйста, обратитесь к этой странице за помощью в настройке MVC с IIS 6: 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>

В этом другом потоке есть некоторые детали, объясняющие, почему это необходимо.

0 голосов
/ 06 сентября 2010

IIS6 настроен для разрешения только определенных расширений для обработки конвейером ASP.net. Чтобы узнать, как вы можете перенаправить запросы, проверьте сообщение по DocV .

0 голосов
/ 03 сентября 2010

Я считаю, что вам нужно использовать фильтр ISAPI в IIS6 для перехвата URL-адресов без расширений. Проблема в том, что ISAPI нужно будет сделать в c / c ++.

...