加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC中的静态文件路由

发布时间:2020-12-16 06:27:39 所属栏目:asp.Net 来源:网络整理
导读:我正在开发一个ASP.NET MVC应用程序.在这个应用程序中,我需要在请求时动态生成站点地图.我知道如何配置路由.但是,我不确定是否可以为特定文件创建路由.目前,我在RouteConfig.cs中有以下内容: routes.MapRoute( name: "Sitemap",url: "resources/sitemap.xml
我正在开发一个ASP.NET MVC应用程序.在这个应用程序中,我需要在请求时动态生成站点地图.我知道如何配置路由.但是,我不确定是否可以为特定文件创建路由.目前,我在RouteConfig.cs中有以下内容:

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

在我的SiteController中,我有以下内容:

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

当我将/resources/sitmap.xml输入浏览器的地址栏时,我注意到我的Sitemap()操作永远不会被触发.甚至可以在ASP.NET MVC中为特定文件设置路由吗?如果是这样,怎么样?

谢谢,

解决方法

所以你必须做一些步骤 –

步骤1 – 映射xml扩展以由.Net进行路由处理
在< system.webServer>下的Web.config中添加以下部分 –

<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",action = "Sitemap",site = UrlParameter.Optional }
 );

然后步骤3 – 尝试访问/SiteMap.xml,您将获得Controller操作命中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读