我想添加一个漂亮的基本路线的一个Asp.Net 网络的形式应用程序(下运行的IIS7、综合模式):请求来 http://mydomain.com/foo/ 我要显示结果的一个动态网页(http://mydomain.com/foopage.aspx).

我已经创建了一个RouteHandler,做这一切并且它似乎是路由选择正确的。

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
     var page = System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("~/foo.aspx", typeof(MyApp.Web.Foo)) as MyApp.Web.Foo;
     return page as IHttpHandler;
    }

问题是,在我RouteHandler的GetHttpHandler方法,所有的实例,当前用户(requestContext.HttpContext.用户、系统。网。HttpContext.电流。用户)是空。可悲的是,foo。aspx需要知道什么是当前用户(用于登录控制,作用的东西,等等),因此呈现的页面是扔空引用的例外情况。我的猜测是,这些路线,处理程序被烧掉前Asp.Net 得到机会,线上的HttpContext与用户的信息。任何思想工作?

PS-我知道这可以通过做一个服务器。转让在一个页面 http://mydomain.com/foo/default.aspx.我想要使用路由于这样的事情,而不是具有一堆无用的文件夹塞满的东西。

谢谢!

有帮助吗?

解决方案 2

我推测这一个我自己。

很像 这个问题, 我路线的工作只是现在的路线来源的结束。aspx(http://mydomain.com/foo-origin.aspx),但失败的时候,他们没有(http://mydomain.com/foo-origin/).

MSDN品上设置的路由与网络形式 告诉你做一些改变网络的配置,但是离开了,你需要设置 runAllManagedModulesForAllRequests 为真正的模块中的节点:

<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
  </system.webServer>
</configuration>

现在它的工作顺顺当当的。

其他提示

看到答案 问题非常相似。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top