请求xml页面时提供ashx页面

时间:2011-05-16 15:23:02

标签: c# asp.net iis rss ashx

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

我工作的组织几乎把我和主机以及开发人员混为一谈,托管并不是我有很多经验(我得到的,但不是专家)。

我知道这可能是IIS中的某些内容,以至于对一件事的请求得到了另一件事,但有人可以给我一个快速推动正确的方向吗?我现在很难找到谷歌的东西!

编辑:在这个例子中它是IIS7和ASP.net 3.5

5 个答案:

答案 0 :(得分:3)

听起来您想要公开/提供http://foo.com/site.rss,但实际上是执行http://foo.com/bar.ashx

IIS7 , implement the URL Rewriting module with "Rule with rewrite map"

在你的web.config中试试这个:

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

答案 1 :(得分:2)

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

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

    </httpHandlers>

... ECT

答案 2 :(得分:0)

您正在寻找的内容称为“URL Rewriting”,虽然IIS不提供开箱即用的功能,但您可以通过多种方式实现它。

使用Apache,你有mod_rewrite。使用IIS(从版本7开始),我认为你有模块。看看:IIS URL Rewrite Module 2

如果您正在寻找更多信息,或者您打算自己动手,请在此处查看:URL Rewriting in ASP.NET

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

答案 3 :(得分:0)

IIS URL Rewrite 2.0?

顺便说一句,它通常是安装的&amp;设置在godaddy.com或discountasp.net等共享主机上,所以你只需要编写配置。

答案 4 :(得分:0)

如果你很幸运能够使用ASP.NET MVC,你可以通过global.asax中的routes表相对轻松地添加重定向。

从内存中添加如下路线:

routes.MapRoute(
"XML Reroute",
"specificname.xml",
new { controller = "Home", action = "Reroute" });

这将捕获对specificname.xml的任何请求,并且他们将转到名为home的控制器,其中包含重新路由的操作,您可以将其重定向到处理程序或将处理程序代码移动到。

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