2012-04-27 2 views
5

나는 어쩌면 ASP.NET에서 너무 많은 기대하지만, 아파치에 그렇게 뭔가를 요청하는 URL을 재 작성 사소한 : http://mysite/myfolder/mypage/niceurlparameter 실제로 http://mysite/mypage.html이 Global.asax 라우팅 설정에 어떤 문제가 있습니까?

가 어떻게 Global.asax에에 그렇게 않는 정적 페이지 역할을 관리?

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/*", "~/myfolder/{page}.html"); 

을하지만 내가 http://mysite/myfolder/mypage/niceurlparameter를 요청할 때 (404)를 반환 유지 :

나는 이것을 시도했습니다.

그러나,이 작품 : http://mysite/myfolder/mypage.html/niceurlparameter을 요청할 때

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}.html/*", "~/myfolder/{page}.html"); 

그래서 난의 mypage.html을받을 수 있나요.

내 URL에서 ".html"부분을 없애고 싶습니다. 내가 뭘 놓치고 있니?

업데이트 : 어떤 이유로, 이전의 경우 '*'와일드 카드가 허용되지 않았습니다.

변경에 :

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/{whatever}", "~/myfolder/{page}.html"); 

는 경로 페이지를 HTML로 요청에 나타납니다,하지만 나는 오류 얻을 :

There is no build provider registered for the extension '.html'. 

왜 세계 단지 (전자의 경우에 작동합니다을 URL이 html 인 경우), html이 생략되지 않았습니까?

+0

실행중인 IIS의 버전은 무엇입니까? 나는 IIS 6가 이것을 허용하지 않을 것임을 기억하는 것처럼 보이지만 와일드 카드 매핑을 추가해야합니다. –

+1

가능한 해결책은이 질문을 참조하십시오. http://stackoverflow.com/q/9918066/25727 – Jan

+0

IIS는 v7.5입니다. 제안 된 링크가 도움이되었습니다. 고마워 – tishma

답변

3

There is no build provider registered for the extension '.html'

정적 HTML 파일은 IIS에서 직접 처리해야하므로이 오류가 발생합니다. 그러나, 귀하의 경우에는 ASP.NET MVC 프레임 워크가 .html 유형의 파일을 처리하려고 시도하고 있습니다.

당신이해야 할 일이라고 생각한다면 새로운 공급자를 만들고 web.config 파일에 등록해야합니다. 당신은 단순히 .aspx 파일을 당신의 정적 HTML 내용을 변경할 수 있습니다이

Custom file extensions for ASP.NET - help needed!

봐. 간단한 복사 및 붙여 넣기 작업을 할 것이고 잘 작동합니다. 파일 형식을 처리하는 방법을 알 수 있습니다.

+1

실제로이 문제를 해결하기 때문에이 사실을 받아들이지 만 결국 웹 서버에서 정적 파일 (!?!)을 제공 할 수있는 사용자 지정 내용을 작성하지 않겠습니까? URL 재 작성은 당신이 정적 파일 리디렉션을 원한다면 가져 가라 .IIS 7.5와 URL 재 작성 2 모듈은 갈 길이 멀다. – tishma