我有一个简单的ASP.NET 3.5 SP1 Web窗体应用程序...我添加了System.Web.Routing DLL,并且我做了一个简单的路由,返回标准的ASP.NET页面作为“IHttpHandler” ”
一切都很好......除了HttpContext.Current.User null ???
所以,我做了一些挖掘(我在Global.asax文件中的所有事件中放置了断点)。通常,这些断点会受到影响(当我导航到标准的“.aspx”页面时):
但是,当使用ASP.NET Routing时......这些事件都没有被触发。我错过了什么吗?
答案 0 :(得分:7)
假设您正在使用IIS6,另一种方法是定义“通配符”扩展处理程序。将这个简单的“全部捕获”映射添加到IIS6将使其能够处理您的无扩展请求。默认情况下,.NET安装程序将“.aspx”映射到aspnet_isapi.dll,这就是.aspx扩展名的工作原理。要将没有扩展名的请求映射到APS.NET引擎,您必须告诉IIS查看每个请求。
这是一篇解释过程的快速文章:
http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx
希望有助于减少网址的“蹩脚”因素。 :)
-Todd
答案 1 :(得分:2)
找到了奇怪和嘶哑(和愚蠢)的答案:)
如果你没有在你的路线末尾添加“.aspx”,那么Global.asax中没有任何内容,这意味着你没有得到任何BeginRequest,AuthenticateRequest,EndRequest等等。另外,你不要得到SessionState或任何东西。
所以,“修复”对我来说只是改变了我的路线:
RouteTable.Routes.Add("Blah", new Route("Blah/{reportName}", new MyHandler());
到此:
RouteTable.Routes.Add("Blah", new Route("Blah/{reportName}.aspx", new MyHandler());
多么完全蹩脚:) ...但这是一个非常简单的修复!
答案 2 :(得分:0)
当你说
时“如果你没有在你的路线末尾添加”.aspx“,那么Global.asax中没有任何内容,这意味着你没有得到任何BeginRequest,AuthenticateRequest,EndRequest等等。另外,你不要得到SessionState或任何东西。“
IIS会在日志文件中记录此类请求,还是只是匿名?应用程序变量和ViewState怎么样?
抱歉,我还没有测试过,但只是问你是否已经知道了?答案 3 :(得分:0)
我检查了应用程序变量和Viewstate,这两个显然正在工作..不确定服务器日志:S