如何从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方法的名称。
查看传入的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