2010-04-13 49 views
3

我想攔截對服務器發送的任何對XML文件的請求。我認爲這可能是一個HttpHandler。它的編碼和它的工作...只在本地主機(?!?!)。HttpHandler和XML文件

那麼,它爲什麼只在localhost上工作?這裏是我的web.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.web> 
    <httpHandlers> 
     <add verb="*" path="*.xml" type="FooBar.XmlHandler, FooBar" /> 
    </httpHandlers> 
    </system.web> 
</configuration> 

這裏是我的C#:

namespace FooBar 
{ 
    public class XmlHandler : IHttpHandler 
    { 
     public bool IsReusable 
     { 
      get { return false; } 
     } 

     public void ProcessRequest(HttpContext context) 
     { 
      HttpResponse Response = context.Response; 
      Response.Write(xmlString); 
     } 
    } 
} 

正如你可能已經看到,我直接在回覆中寫的xmlString,這只是暫時的,因爲我仍然想知道如何才能給文件名,而不是(這是第二個問題;))

應該寫在響應是什麼只有xml文件名,將由Flash應用程序檢索。

感謝

詳情:
的Windows服務器上使用IIS 6.0 2003

編輯:
調用從它看起來像它沒有得到的HttpHandler的另一臺計算機的頁面時。但是,IIS的映射已正確完成。

+0

您的代碼看起來不錯。當你說它在localhost上不工作時,究竟是什麼意思?你看到什麼(或看不到),告訴你它不工作?你怎麼打這個?您是否使用過Fiddler和/或VS調試器來觀看請求? – Ray 2010-04-13 14:17:51

+0

@射線:增加細節。如果程序集是ASP.Net網站,這有什麼關係? – ALOToverflow 2010-04-13 14:22:35

+0

它應該按照您的設置進行工作。 Stefano的觀點是一個檢查的好地方 - 如果IIS正在處理請求,而不是將它傳遞給asp.net,這將是你將看到的。你看到IIS日誌中的請求嗎? – Ray 2010-04-13 14:26:44

回答

4

我沒有在手的那一刻的IIS6服務器,但也有需要兩個步驟:

第一步並不明顯,因爲Visual Studio集成Web服務器映射到ASP.NET的所有請求。

其他資源:

+0

啊。很高興知道VS自動將所有請求映射到asp.net。感謝您的總結。現在正在工作。 – ALOToverflow 2010-04-13 17:08:17

0

如果IIS是版本6.0或以前, 處理程序將被忽略,因爲IIS處理xml擴展而不調用ASP.NET進程。 您可以從IIS管理器更改它,並說iis使用asp.net處理XML。

+0

是的。 IIS管理器已經配置爲處理xml擴展與我的dll。但仍然不起作用。 – ALOToverflow 2010-04-13 14:27:25

+0

應將IIS配置爲具有asp.net句柄xml文件,而不是您的dll。使用與您配置的aspx文件相同的方式來配置xml文件。 – Ray 2010-04-13 14:54:30

+0

如何定義自定義行爲,如果它是處理xml的asp.net? – ALOToverflow 2010-04-13 14:58:42