我正在开发一个ASP.NET MVC应用程序.在这个应用程序中,我需要在请求时动态生成站点地图.我知道如何配置路由.但是,我不确定是否可以为特定文件创建路由.目前,我在RouteConfig.cs中有以下内容:
routes.MapRoute(
name: "Sitemap",
url: "resources/sitemap.xml",
defaults: new { controller = "Site", action = "Sitemap" }
);
Run Code Online (Sandbox Code Playgroud)
在我的SiteController中,我有以下内容:
public ActionResult Sitemap()
{
// I will build my sitemap.xml file here and return it.
}
Run Code Online (Sandbox Code Playgroud)
当我将/resources/sitmap.xml输入浏览器的地址栏时,我注意到我的Sitemap()操作永远不会被触发.甚至可以在ASP.NET MVC中为特定文件设置路由吗?如果是这样,怎么样?
谢谢,
所以你必须做一些步骤 -
步骤1 -映射xml扩展以由.Net进行路由处理在Web.config中添加以下部分<system.webServer>-
<handlers>
<add name="HtmlFileHandler" path="*.xml" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
Run Code Online (Sandbox Code Playgroud)
第2步 -定义路由并覆盖与现有文件匹配的请求.
routes.RouteExistingFiles = true;
routes.MapRoute(
name: "Sitemap",
url: "{site}.xml",
defaults: new { controller = "Site", action = "Sitemap", site = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
然后第3步 - 尝试访问/SiteMap.xml,您将获得控制器操作命中.
| 归档时间: |
|
| 查看次数: |
2455 次 |
| 最近记录: |