C# 将静态URL路由到MVC中的控制器操作?

C# 将静态URL路由到MVC中的控制器操作?,c#,asp.net-mvc-5,asp.net-mvc-routing,C#,Asp.net Mvc 5,Asp.net Mvc Routing,大家好,我的控制器中有一个aciton,它为我的站点生成一个站点地图,这里的问题是第一次当文件不存在时,请求转到操作 但是一旦生成了文件,一个静态文件就会被放置在站点中,之后当我点击URL时,请求就不会发送到控制器,有没有解决方法 Below is the URL http://localhost:1234/sitemap.xml Below is the code am using [HttpGet, ActionName("sitemap")]

大家好,我的控制器中有一个aciton,它为我的站点生成一个站点地图,这里的问题是第一次当文件不存在时,请求转到操作 但是一旦生成了文件,一个静态文件就会被放置在站点中,之后当我点击URL时,请求就不会发送到控制器,有没有解决方法

Below is the URL

        http://localhost:1234/sitemap.xml

Below is the code am using

        [HttpGet, ActionName("sitemap")]
        public ActionResult sitemap()
        {           

           //will get the sitemap content here and will generate the sitemap 
            var sitemapFile = "~/sitemap.xml";
            return File(sitemapFile, "text/xml");
        }

每次我点击URL时,它都应该转到操作并重新生成文件,但这不起作用。有人能帮我吗

将其添加到RouteConfig.cs文件中

routes.MapRoute(
    name: "Sitemap",
    url: "Sitemap",
    defaults: new { controller = "Home", action = "Sitemap" }
);
您可以像这样访问您的操作


希望这就是您想要的。

当您的sitemap.xml文件存在时,IIS将接收请求并为您现有的sitemap.xml提供服务。有关此问题的更多信息,请参阅

如果我理解正确,您希望将
sitemap.xml请求
路由到
MVC路由
,这里有一个很好的例子

首先需要将sitemap.xml的请求映射到
TransferRequestHandler
。将此添加到web.config

<add name="SitemapFileHandler" path="sitemap.xml" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
在绘制路线图之前,先写下这句话

routes.RouteExistingFiles = true;

有关

的更多信息您是否尝试过,@SHammelburg是的,可以,但我希望它能以这种方式工作,因为我们必须使用sitemap.xml扩展名将其提交给google bots,这就是我必须编写自定义路由的原因当我使用URL“”时,此路由肯定会工作,但当URL为“”时,我也希望它能工作如果根文件夹中有sitemap.xml,那么它应该可以工作。我刚刚试过并用两种方式加载。是的,它会加载,但一旦文件存在,它就不会再执行操作,直到文件被删除。您如何创建sitemap.xml?Andrew,我们需要在哪里创建.config节文件?什么是“SitemapFileHandler”,我想您的意思是在哪里添加
SitemapFileHandler
?这需要位于节点的web.config中
routes.RouteExistingFiles = true;