문제

SharePoint 웹 사이트에서 친절한 URL을 설정하려고합니다. Rewritepath를 사용하여 ASP.NET 2.0 친화적 인 URL을 수행 할 수 있다는 것을 알고 있지만 ASP.NET 3.5 SP1과 함께 제공되는 System.Web.Routing을 사용할 수 있는지 궁금했습니다.

나는 경로 테이블을로드하는 방법을 알아 냈다고 생각하지만 올바른 ihttphandler를 통과하기 위해 어떤 방법을 사용해야하는지 명확하지 않습니다.

감사!

도움이 되었습니까?

해결책

나는 Ryan이 가진 것을 가져갔습니다.

var route = new Route("blah/{*path}", new MyRouteHandler());
RouteTable.Routes.Add(route);
public class MyRouteHandler : IRouteHandler
{    
public IHttpHandler GetHttpHandler(RequestContext requestContext)    
{        
     //rewrite to some know sharepoint path
     HttpContext.Current.RewritePath("~/Pages/Default.aspx");

     // return some HTTP handler here  
     return new DefaultHttpHandler();  

}}

그것은 나를 위해 잘 작동하는 것 같습니다.

다른 팁

나는 이것을 주식 지점 평가 프로세스의 일부로 살펴 보라고 요청 받았다.

내 이해는 그게 URI 템플릿 기본적으로 호스트 이름과 재귀 폴더 구조가 이어집니다.

이는 URI를 255 자로 자르는 공유 지점으로 인해 더욱 복잡합니다. 따라서 특히 깊거나 장황한 폴더 구조가 있으면 URI가 유효하지 않을 수 있습니다.

나는 인간 읽기 가능한 컨벤션을 따르고 주식 지점 협약으로 전환함으로써 본질적으로 소멸 / 정리에 대해 생각하고있었습니다. 즉:

http://myhostname.com/docs/human-resources/case-files/2009/reviews/ed-blackburn.docx

공유 포인트로 변환 :

http://myhostname.com/human%20resources/case%20files/2009/reviews/ed%20blackburn.docx

추가로 필요한 서비스는 컨트롤러에서 제어 할 수 있습니다.

255 자 이상이라면 어떤 종류의 작은 접근 방식이 나의 초기 제안이 될 것입니다.

아래만큼 쉬워야합니다.

var route = new Route("blah/{*path}", new MyRouteHandler());
RouteTable.Routes.Add(route);

public class MyRouteHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        // return some HTTP handler here
    }
}

그런 다음 web.config의 http 모듈 아래에서 System.web.routing.urlroutingModule을 등록하면 잘해야합니다.

<add name="Routing" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top