[英]Creating a custom .svc handler for WCF service hosted in IIS
我在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
類的實例。 也許您可以加入這里的流程,然后做您需要做的事情?
如果確實需要,也可以使用ASP.NET Routing和返回自己的IHttpHandler實現的IRouteHandler。
http://msdn.microsoft.com/en-us/library/system.web.routing.iroutehandler.gethttphandler.aspx http://msdn.microsoft.com/en-us/library/cc668201.aspx
過去,我在設置WCF數據服務時就這樣做了,但我不明白為什么它在這里也無法正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.