2010-05-27 3 views
0

IHttpHandler 클래스를 개발했으며이를 verb="*" path="*"으로 구성 했으므로 테스트 웹 사이트에 대한 내 자신의 REST 구현을 만들기 위해 모든 요청을 처리하고 있습니다. 동적으로 HTML을 생성합니다.IHttpHandler 및 상대 URL 문제

.css 파일 요청이 도착하면 context.Response.WriteFile(Server.MapPath(url)) ... 그림과 동일하게 처리해야하므로 직접 응답해야합니다.

내 주요 문제는 앵커에 상대 URL을 넣는 경우입니다. 예를 들어, 나는이 <a href="page1">Go to Page 1</a>과 같은 링크가있는 메인 페이지를 가지고 있으며 Page 1에는 다른 링크 <a href="page2">Go to Page 2</a>이 있습니다. 페이지 1과 2는 같은 레벨 (http://host/page1http://host/page2)에 있어야합니다. 그러나 페이지 2로 이동을 클릭하면 처리기에서 다음 URL을 얻게됩니다 : ~/page1/~/page2 ... 고통이 있습니다. url = url.SubString (url.LastIndexOf ('~')) 깨끗하게하기 위해서입니다. 아무 문제가 없지만이 동작은 완전히 정상적으로 처리됩니다.

지금 당장은이 문제에 대처할 수는 있지만 생각합니다. 미래에 이것은 두통을 가져올 것입니다. 나는 context.Request.Url이라는 정보를 사용하여 절대 URL을 가진 모든 링크를 설정하려고 시도했지만 고통이기도합니다 : D, 그래서 더 멋진 정보가 있는지 알고 싶습니다. 이런 종류의 일을하는 방법.

나에게 꽤 분명한 반응을 주면서 주저하지 마라. 왜냐하면 나는 웹 개발에 꽤 새로운데 아마 URL, Http 등에 관한 기본적인 내용을 건너 뛰고 있기 때문이다.

감사합니다. 미리 감사드립니다.

+0

url 변수는 context.Request.Url과 동일합니까? – Sijin

+0

url 변수가 context.Request.AbsoluteApplicationPath를 포함하는 데 사용됩니다 (해당 속성의 이름은 정확하게 기억하지 못합니다) – vtortola

답변

2

우선 HTML 출력 브라우저를 살펴보고 구체적으로 설명하는 링크를 살펴 보겠습니다.

당신은 링크가 <a href="page2">Go to Page 2</a>이라고 말하지만 결과에 따르면 나는 <a href="~/page2">Go to Page 2</a>과 같다고 추측합니다. 핸들러에 브레이크 포인트를 배치하고 브라우저의 주소 표시 줄에 "~/page1/~/page2"가 표시되면 "http://www.example.com"과 같이 말하면됩니다/page1/~/page2 "

먼저 링크를 생성하는 코드를 확인해야합니다. 어떤 종류의 함수 호출에서 생성 된 경우 스크립트 주소가 아닌 웹 주소를 가져야합니다.

첫 번째 수준 페이지간에 전환하는 이러한 종류의 링크는 모두 현재 표시된 페이지에 상대적인 것이 아니라 자신의 웹 사이트 루트와 관련된 상대 경로임을 나타내는 "/"로 시작해야합니다.