我想拦截任何向服务器发出的 XML 文件请求。我认为使用 HttpHandler 可能是可行的。它经过编码并且可以工作......仅在本地主机上(?!?!)。
那么,为什么它只在本地主机上工作?这是我的 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,这只是暂时的,因为我仍然想知道如何提供文件名(这是第二个问题;))
应该在响应中写入的只是 flash 应用程序将检索的 xml 文件名。
谢谢
详情:
在 Windows Server 2003 上使用 IIS 6.0。
编辑:
当从另一台计算机调用该页面时,它似乎没有到达 HttpHandler。但是,IIS 的映射已正确完成。
最佳答案
目前我手头没有 IIS6 服务器,但需要两个步骤:
- 将 xml 扩展映射到 ASP.NET(使用 aspx 扩展的可执行路径):Setting Application Mappings in IIS 6.0
- 告诉 ASP.NET 使用您的自定义处理程序:Deploying HTTP Handlers and HTTP Modules
第一步并不明显,因为 Visual Studio 集成 Web 服务器正在将所有请求映射到 ASP.NET。
其他资源:
关于c# - HttpHandler 和 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2630049/