c# - 为 IIS 中托管的 WCF 服务创建自定义 .svc 处理程序

标签 c# asp.net wcf iis-7

我在 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/

相关文章:

.net - WCF:如何以编程方式重新创建这些 App.config 值?

c# - 如何使用 C# 将文本写入 Web 服务中的 txt 文件?

c# - 将 MouseButtonEventArgs 背后的代码转换为 MVVM

asp.net - 更改所选 ListView 行的 css

asp.net - 设置控件的选定值后运行 Javascript

c# - 如何从代码隐藏返回字符串并显示在网页上?

wcf - 如何为单向方法启用可靠性?

c# - ASP.NET MVC3 用户登录

c# - 如何优化这些空值检查操作?

c# - WS-* 是什么意思?