我在 IIS 7 中托管一个 wcf 服务。我很好奇是否可以创建我自己的 .svc HttpHandler 映射和类来处理服务请求。
例如,如果我要拦截对以“.foo”扩展名结尾的文件的任何请求,我可以将其添加到我的 web.config 中
<handlers>
<add name="*.foo_**" path="*.foo" verb="*" type="MyServer.FooHttpHandler" />
</handlers>
我可以在我的默认根中有一个类来执行以下操作
public class FooHandler: IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
// do stuff, validate?
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("filename={0}", url));
HttpContext.Current.Response.AddHeader("Content-Type", "fooMimeType");
HttpContext.Current.Response.WriteFile(url);
HttpContext.Current.Response.End();
}
public bool IsReusable
{
get { return false; }
}
}
是否可以对 wcf .svc 请求执行类似的操作?我不确定它是否完全相同,因为我不需要提供文件来响应,我想拦截和代理响应。
或者是否有更好的方法来实现执行我所需的服务前逻辑的服务行为?
最佳答案
你想达到什么目的?不确定您是否可以替换现有的 *.svc http 处理程序 - 但您可以更轻松地为 WCF 服务创建您自己的自定义 ServiceHostFactory
。你基本上添加一个属性你的 *.svc 文件:
<%@ ServiceHost Language="C#" Debug="true"
Service="YourNamespace.YourService"
Factory="YourNamespace2.YourServiceHostFactory" %>
使用它,IIS 现在将实例化您自己的 YourServiceHostFactory
并要求您创建 YourService
类的实例。也许您可以在这里 Hook 流程并做您需要做的事情?
关于c# - 为 IIS 中托管的 WCF 服务创建自定义 .svc 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7474465/