문제

ASP.NET 웹 양식 앱 (IIS 7, 통합 모드에서 실행)에 매우 기본적인 경로를 추가하려고합니다. 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.user, system.web.httpcontext.current.user)는 null이라는 것입니다. 안타깝게도 Foo.aspx는 현재 사용자가 무엇인지 (로그인 컨트롤, 역할 재료 등) 알아야하므로 페이지 렌더링은 Null Reference 예외를 던지고 있습니다. 내 생각에 ASP.NET이 사용자 정보로 HTTPContext를 연결할 수있는 기회를 얻기 전에 이러한 경로 처리기가 발사되고 있다고 생각합니다. 근로에 대한 아이디어가 있습니까?

추신 - 나는 이것이 서버를 수행함으로써 달성 될 수 있다는 것을 알고있다. http://mydomain.com/foo/default.aspx. 나는 쓸모없는 폴더가 물건을 혼란스럽게하는 것이 아니라 이런 종류의 일에 라우팅을 사용하고 싶습니다.

감사!

도움이 되었습니까?

해결책 2

나는 이것을 스스로 알아낼 수 있었다.

아주 좋아요 이 질문, 내 경로는 경로 원산지가 .aspx로 끝났을 때 잘 작동했습니다.http://mydomain.com/foo-origin.aspx), 그러나 그들이하지 않았을 때 실패했습니다 (http://mydomain.com/foo-origin/).

웹 양식으로 라우팅 설정에 대한 MSDN 기사 웹 구성을 몇 가지 변경하라고 말하지만 설정해야한다는 것을 제외합니다. runAllManagedModulesforAllRequests 모듈 노드에서 true :

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

이제 수영으로 작동합니다.

다른 팁

답변을 참조하십시오 이것 질문, 매우 유사합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top