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

本文关键字:请求 方法 WCF 中的 Application BeginRequest | 更新日期: 2023-09-27 18:04:08

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

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

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

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

查看传入的HTTP header:

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

这将吐出完整的值,在我的示例中是:

" http://tempuri.org/IService1/DoWork "

这可能值得注意,但OperationContext.Current.IncomingMessageHeaders.Action不会在Application_BeginRequest中工作,因为操作尚未开始,因此OperationContext.Current为null。

如果这是一个SOAP WCF服务,您可以检查项目中的服务引用并查看这些引用。如果它是SOAP WCF,并且您还没有将其添加为服务引用,请右键单击项目并转到添加服务引用。然后添加您希望使用的url和名称空间。您还可以导航到WISDL来查看那里的方法。为此,您可以在浏览器中以以下格式打开url http://{WebServiceUrl}/{NameOfService}.svc?wsdl

如果这是一个REST WCF服务,那么该服务可能提供了一个API引用。例如,url可以是http://{WebServiceUrl}/{NameOfService}/API/help