Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在请求xml页面时提供ashx页面_C#_Asp.net_Iis_Rss_Ashx - Fatal编程技术网

C# 在请求xml页面时提供ashx页面

C# 在请求xml页面时提供ashx页面,c#,asp.net,iis,rss,ashx,C#,Asp.net,Iis,Rss,Ashx,我有一个.ashx文件,为rss提要和站点地图生成xml。我们的SEO新手告诉我们“.ashx”扩展正在损害我们(例如,坚持现有的“sitemap.ashx”文件应称为“sitemap.xml”,rss提要为“site.rss”) 我工作的公司几乎把我和托管以及开发混为一谈,托管并不是我有很多经验的东西(我能应付,但不是专家) 我知道这很可能是IIS中的一种情况,即一件事的请求得到另一件事的服务,但是有人能给我一个正确方向的快速提示吗?我现在甚至想不出什么东西给谷歌 编辑:在本例中,它是IIS7

我有一个.ashx文件,为rss提要和站点地图生成xml。我们的SEO新手告诉我们“.ashx”扩展正在损害我们(例如,坚持现有的“sitemap.ashx”文件应称为“sitemap.xml”,rss提要为“site.rss”)

我工作的公司几乎把我和托管以及开发混为一谈,托管并不是我有很多经验的东西(我能应付,但不是专家)

我知道这很可能是IIS中的一种情况,即一件事的请求得到另一件事的服务,但是有人能给我一个正确方向的快速提示吗?我现在甚至想不出什么东西给谷歌


编辑:在本例中,它是IIS7和ASP.net 3.5,您要查找的内容称为“”,虽然IIS没有提供现成的功能,但有一些方法可以实现它

使用Apache,您必须重写mod_。对于IIS(从版本7开始),我想您已经有了模块。看看:

如果您正在寻找更多信息或计划推出自己的产品,请查看此处:

如果您在共享托管服务器上托管网站,您可能无法在IIS中安装自定义模块,但可以将其作为应用程序的一部分进行部署。


顺便说一句,它通常安装在godaddy.com或dispentasp.net等共享主机上,因此您只需编写配置。

听起来您想公开/服务
http://foo.com/site.rss
,但实际执行
http://foo.com/bar.ashx

因为

在web.config中尝试以下操作:

<system.webServer>
<rewriteMaps>
    <rewriteMap name="StaticRedirects">
        <add key="/site.rss" value="/bar.ashx" />
    </rewriteMap>
</rewriteMaps>
</system.webServer>

如果您有幸使用ASP.NET MVC,您可以相对轻松地通过global.asax中的routes表添加重定向

从内存中添加一条路径,如下所示:

routes.MapRoute(
"XML Reroute",
"specificname.xml",
new { controller = "Home", action = "Reroute" });
这将捕获对specificname.xml的任何请求,它们将转到名为home的控制器,并执行一个重路由操作,您可以将该操作重定向到处理程序或将处理程序代码移动到其中

-编辑-
也就是说,我可能会选择p.campbell提供的静态路由选项。

无需重写,您可以配置.ashx以响应web.config中的.rss或.xml。您始终可以添加查询字符串参数以响应不同的逻辑

<system.web>
    <httpHandlers >
        <add type="[ashx class name]" verb="*" path="*.rss"/>

    </httpHandlers>


…ect

请指定您使用的ASP.NET和IIS的版本,然后我可以提出更好的建议。我认为SEO人员错了。URL上的“扩展名”不重要,重要的是请求返回的内容类型。@Brian:你可能是对的。但是谷歌指定了
sitemap.xml
,我认为安全总比后悔好。