ste*_*fan 3 asp.net-mvc asp.net-mvc-4
我有一个大型会员营销网站,在Windows Azure上托管了数百万种产品。对于SEO,我必须提供一个动态创建的sitemap.xml。
public ActionResult SiteMap()
{
string sitemapUrl = "https://trendley.blob.core.windows.net/sitemap/sitemap.xml";
byte[] bImage = null;
using (WebClient wc = new WebClient())
{
bImage = wc.DownloadData(sitemapUrl);
}
return File(bImage, "application/octet-stream");
}
Run Code Online (Sandbox Code Playgroud)
我将以下路由添加到我的RouteConfig中:
routes.MapRoute("Sitemap",
"sitemap.xml",
new { controller = "Home", action = "Sitemap" });
Run Code Online (Sandbox Code Playgroud)
不幸的是,这没有用。我得到-> HTTP错误404.0-找不到
当我将“ sitemap.xml”更改为sitemapxml(除去扩展名)时,将调用我的控制器方法。已经进行了一些研究并使用了我的web.config,但似乎没有任何效果。
我尝试的第一件事是添加:
<modules runAllManagedModulesForAllRequests="true" />
Run Code Online (Sandbox Code Playgroud)
第二件事:
<add
name="AdfsMetadata"
path="sitemap.xml"
verb="GET"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何做到这一点。我是否需要为此编写自己的处理程序?
干杯,斯特凡
该路由不起作用的原因是,默认情况下,.xml是由IIS中的“ StaticFileHandler”处理的,因此当请求来自ASP.net时不会被调用。
选项1:启用runAllManagedModulesForAllRequests-在您的Web .config中添加以下内容
<modules runAllManagedModulesForAllRequests="true" />
Run Code Online (Sandbox Code Playgroud)
它位于system.webserver节点内部。
选项2:将.xml的映射添加到IIS,并将该文件扩展名强制进入ASP.net管道。看这里
| 归档时间: |
|
| 查看次数: |
2392 次 |
| 最近记录: |