如何从Application_BeginRequest中的WCF请求获取方法名称?

时间:2016-08-26 20:20:44

标签: c# .net wcf iis

我在IIS中托管WCF,在我的HttpApplication中我希望在Application_BeginRequest方法中获取WCF操作合同名称(方法被调用):

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var request = Context.Request;
}

我从上下文中获取请求,但我无法理解如何找到被调用的WCF方法的名称。

2 个答案:

答案 0 :(得分:0)

如果这是SOAP WCF服务,您可以检查项目中的服务引用并查看引用。如果它是SOAP WCF并且您尚未将其添加为服务引用,请右键单击该项目并转到添加服务引用。然后添加您要使用的url和命名空间。您还可以导航到WISDL以查看其中的方法。要做到这一点,您只需在浏览器中以这种格式提取网址http:// {WebServiceUrl} / {NameOfService} .svc?wsdl

如果这是REST WCF服务,则该服务可能会提供API参考。例如,该网址可能是这样的http:// {WebServiceUrl} / {NameOfService} / API / help

答案 1 :(得分:0)

查看传入的HTTP标头:

Console.WriteLine(HttpContext.Current.Request.Headers["SOAPAction"]);

这将在我的样本中吐出全部值:

  

http://tempuri.org/IService1/DoWork

值得注意的是,OperationContext.Current.IncomingMessageHeaders.Action无法在Application_BeginRequest中使用,因为操作尚未开始,因此OperationContext.Current为空。