我想使用HTTP處理程序來創建RSS源。爲了這個目的,我想把我的邏輯創建在實現IHttpHandler的C#類中的rss XML,然後將這個處理程序「映射」到web.config文件中,並在我的「映射名稱」中註冊路由規則。我做這樣的事情:在HTTPHandler中使用路由
我HTTPHanlder:
public class RSSFeedHandler:IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//logic for building the XML
context.Response.ContentType = "text/xml";
context.Response.Write(XMLContent);
.....................................
我的web.config:
<httpHandlers>
<add path="Rss" verb="*" type="RSSFeedHandler" validate="false" />
.......
<handlers>
<add name="RSSFeedHandler" path="Rss" verb="*" type="RSSFeedHandler" />
........
我在Global.asax中路由rulse:
RoutingHandler rssHandler = new RoutingHandler("~/rss");
.........
routes.Add(new Route("rss/{type}/{id}", rssHandler));
我的路由Hanlder:
public class RoutingHandler : IRouteHandler
{
............................
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
因此,我希望在地址欄中輸入如下內容:www.mysite.com/rss/news/25例如, 服務器執行HTTP Handler中的邏輯並顯示rss提要爲類型'新聞'ID爲'25'。 (這些路由參數應該被解析爲我的RSS HTTPHanlder)
問題是,當我調用一個類似於上面的URL時,GetHttpHandler方法中有一個錯誤,它說:「文件'/ Rss'不存在。「
我想,這是因爲,這個方法已經在web.config中'映射'之前被調用過了,但我不確定。
你知道我該如何達到我想要的功能嗎?
你在Visual Studio的集成web服務器或IIS(如果IIS的哪個版本)中運行這個? – 2010-08-17 13:08:17
我非常懷疑它,但你可以在web.configs中使用'Rss'嗎?(我知道windows是不區分大小寫的目錄,但只是爲了清楚起見) – 2010-08-17 13:10:30
我使用的是Visual Studio 2008,它是集成的IIS。但我在我的項目中有其他HTTPHanndler,它們在web.config中「映射」並且正在工作。路由邏輯也是正確的。我有和很多路由規則是可以的。如果我使用'routes.Add(新路由(「Rss」,新的StopRoutingHandler()))'禁用路由模式,則調用此處理程序,但我無法從中獲取路由參數。 – 2010-08-17 13:15:15