2014-02-21 2 views
4

ASP.NET MVC 앱에서 작업하고 있습니다. 이 응용 프로그램에서 동적으로 Sitemap을 요청할 때 생성해야합니다. 경로를 일반적으로 구성하는 방법을 알고 있습니다. 그러나 특정 파일에 대한 경로를 만들 수 있는지 확실하지 않습니다. 현재, 나는 RouteConfig.cs에 다음과 같은 한 : 내 SiteController에서ASP.NET MVC의 정적 파일 경로

routes.MapRoute(
    name: "Sitemap", 
    url: "resources/sitemap.xml", 
    defaults: new { controller = "Site", action = "Sitemap" } 
); 

, 나는 다음과 같은 한 :

public ActionResult Sitemap() 
{ 
    // I will build my sitemap.xml file here and return it. 
} 

을 나는 브라우저의 주소 표시 줄에 /resources/sitmap.xml 입력 할 때, 나는 내 Sitemap() 액션이 절대로 실행되지 않는다는 것을 알게되었습니다. ASP.NET MVC에서 특정 파일의 경로를 설정할 수도 있습니까? 그렇다면 어떻게?의 Web.config에서 섹션에서 다음 추가 라우팅 닷넷으로 돌볼 수있는 XML 확장지도 - 1

단계 -

감사합니다,

답변

5

그래서 당신은 몇 가지 단계로 할 수있어 <system.webServer> -

<handlers> 
    <add name="HtmlFileHandler" path="*.xml" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
</handlers> 

단계 2-은 당신의 경로를 정의하고 기존 파일을 일치하는 요청을 무시합니다.

routes.RouteExistingFiles = true; 

routes.MapRoute(
    name: "Sitemap", 
    url: "{site}.xml", 
    defaults: new { controller = "Site", action = "Sitemap", site = UrlParameter.Optional } 
); 

다음 3 단계 - 당신이 컨트롤러 액션 히트를 얻을 것이다, /SiteMap.xml에 액세스하려고합니다.

+0

존재하지 않는 sitemap.xml 파일에 대해/sitemap에 경로를 지정하면 routes.RouteExistingFiles = true; 행을 추가 할 필요가 없으며'HtmlFileHandler'' 경로 속성도 설정할 수 있습니다 * .xml 대신 'sitemap.xml'로 변경하십시오. 이것이 많은 이점이 될 것인지 확신하지 못했지만, 나는 단지 그것을 언급 할 것이라고 생각했다. 대답 주셔서 감사합니다, v 유용합니다. – Ted