2010-04-13 52 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