2010-08-17 62 views
1

我想使用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中'映射'之前被調用過了,但我不確定。

你知道我該如何達到我想要的功能嗎?

+0

你在Visual Studio的集成web服務器或IIS(如果IIS的哪個版本)中運行這個? – 2010-08-17 13:08:17

+0

我非常懷疑它,但你可以在web.configs中使用'Rss'嗎?(我知道windows是不區分大小寫的目錄,但只是爲了清楚起見) – 2010-08-17 13:10:30

+0

我使用的是Visual Studio 2008,它是集成的IIS。但我在我的項目中有其他HTTPHanndler,它們在web.config中「映射」並且正在工作。路由邏輯也是正確的。我有和很多路由規則是可以的。如果我使用'routes.Add(新路由(「Rss」,新的StopRoutingHandler()))'禁用路由模式,則調用此處理程序,但我無法從中獲取路由參數。 – 2010-08-17 13:15:15

回答