Pergunta

Eu tenho um simples ASP.NET 3.5 SP1 Web Forms aplicativo ... Eu adicionei o System.Web.Routing DLL, e eu fiz uma rota simples que retorna um padrão ASP.NET Page como "IHttpHandler ".

Tudo é bom ... exceto que HttpContext.Current.User é nulo ???

Então, eu fiz um pouco mais de escavação (I colocar pontos de interrupção em todos os eventos no arquivo global). Normalmente, esses pontos de interrupção ser atingido (quando eu navegar para um padrão "aspx" página):

  • Application_BeginRequest
  • Application_AuthenticateRequest
  • Application_EndRequest

Mas, ao usar ASP.NET Routing ... nenhum desses eventos estão disparando. Estou faltando alguma coisa?

Foi útil?

Solução

Assumindo que você está usando IIS6, a alternativa é definir um manipulador de extensão "wild card". Adicionando este simples "catch all" mapeamento para IIS6 lhe permitirá processar seus pedidos sem extensão. Por padrão, o instalador .NET mapeia "aspx" ao aspnet_isapi.dll- É por isso que as obras de extensão .aspx. Para mapear solicitações sem extensão para o motor APS.NET, você deve dizer IIS para olhar cada pedido .

Aqui está um artigo rápido que explica o processo:

http: // haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

Espero que ajude e reduz o fator de "lame" de seus URLs. :)

-Todd

Outras dicas

Encontrou a resposta aberrante e bizarro (e burro):)

Se você não adicionar "aspx" ao final do seu percurso, os incêndios nada no Global.asax, ou seja, você não obter qualquer BeginRequest, AuthenticateRequest, EndRequest, etc ... Além disso, você don' t get SessionState ou nada.

Assim, a "solução" foi para mim apenas mudar minha rota a partir deste:

RouteTable.Routes.Add("Blah", new Route("Blah/{reportName}", new MyHandler());

a esta:

RouteTable.Routes.Add("Blah", new Route("Blah/{reportName}.aspx", new MyHandler());

Como completamente idiota :) ... mas é uma correção nada-a-menos!

Quando você diz

"Se você não adicionar" aspx" ao final do seu percurso, os incêndios nada no Global.asax, ou seja, você não obter qualquer BeginRequest, AuthenticateRequest, EndRequest, etc ... Além disso, você don 't get SessionState ou qualquer coisa. "

Will IIS log tais pedidos nos arquivos de log ou eles são apenas anônimo? o que acontece com as variáveis ??de aplicação e ViewState?

desculpe eu não testei ainda, mas apenas perguntando se você já deve saber?

i ter verificado variável de aplicação e Viewstate, estes dois são, obviamente, trabalhar .. não tem certeza sobre os logs do servidor: S

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top