Como mapear em um provedor de reescrita do IIS7?
Pergunta
Estou usando o excelente módulo de reescrita IIS7 (V2) e quero criar um reescrita personalizado que reescreva de maneira diferente, dependendo de se o arquivo físico existe.
Eu criei com sucesso um provedor, como neste tutorial:http://learn.iis.net/page.aspx/804/developing-a-custom-rewrite-provider-for-url-rewrite-module/
No entanto, realmente precisa ser capaz de mapear o URL para um caminho físico - eu normalmente faria isso via httpcontext.current.server.mappath () ou HostingEnvironment.mappath (), mas parece que o httpcontext não foi inicializado (em em em Menos dentro do domínio do aplicativo atual - como o módulo de reescrita é o código nativo, estou tendo dificuldades para descobrir onde posso obter essas informações).
Eu realmente não quero ter que recorrer à criação do meu próprio módulo de reescrita para contornar esse problema - alguém tem alguma pista para mim?
Obrigado! Marca.
Solução
Você não poderá alcançá -lo usando essas APIs, pois o código é executado em um aplicativo diferente do que o ASP.NET está usando.
A única maneira de pensar que esse trabalho é passar a variável de servidor certa que inclui o caminho físico para sua extensão e fazer um path.combine () você mesmo.
Então, supondo que você tenha uma extensão chamada YourProvider, que você está chamando de alguma forma assim:{Yourprovder: {url}}
Você pode fazer:{YourProvder: {Appl_physical_path} | {url}}
Agora você pode obter o caminho físico e o URL separado por um tubo | , certifique -se de passar no caminho físico primeiro, pois o URL está no controle de usuários externos, você não deseja que eles o indicam a obter um caminho físico diferente.