Вопрос

Я использую довольно превосходный модуль Rewrite IIS7 (V2) и хочу создать пользовательский переписывательпроводов, который переписывает по-разному, когда существует ли физический файл.

Я успешно создал провайдер, как в этом руководстве:http://learn.iis.net/page.aspx/804/developing-a-custom-rewrite-provider-for-url-rewrite-module/

Однако действительно нужно иметь возможность отображать URL-адрес физическому пути - я обычно делаю это через httpContext.courent.server.mappath () или hostingenvironment.mappath (), но похоже, что httpcontext не был инициализирован (в Наименее в текущем домене приложения - поскольку модуль Rewrite является нативным кодом, у меня возникли трудности, где я могу получить эту информацию).

Я не очень хочу прибегать к созданию собственного модуля перезаписи, чтобы обойти эту проблему - у кого-нибудь есть какие-либо подсказки для меня?

Спасибо! Отметка.

Это было полезно?

Решение

Вы не сможете добраться до него, используя эти API, поскольку код работает в другом приложении, чем один ASP.NET.

Единственный способ, которым я могу подумать, чтобы сделать эту работу, - это пройти правильную переменную сервера, которая включает в себя физический путь к вашему расширению и выполнить Path.combine () самостоятельно.

Так предполагая, что у вас есть расширение, называемое yourProvider, который вы как-то звонит так:{YourProvder: {URL}}

Ты можешь сделать:{Yourprovder: {appl_physical_path} | {URL}}

Теперь вы можете получить физический путь и URL, разделенный трубой | Обязательно сначала пропустите физическую путь, поскольку URL-адрес в управлении внешними пользователями, вы не хотите, чтобы они обманули вас, чтобы получить другой физический путь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top