2013-09-23 56 views
5

我刚刚开始截取对我的WCF服务的请求。WCF AfterReceiveRequest获取标题

我打电话使用Java代码的Web服务,它看起来像这样(短版)

connection = (HttpURLConnection)url.openConnection(); 
connection.setRequestMethod("GET"); 
connection.setRequestProperty("Username", "Testname"); 

我收到请求,但我不能让/发现在消息请求的报头。我试过这样的事情:

public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel, System.ServiceModel.InstanceContext instanceContext) 
{ 
    int headerIndex = request.Headers.FindHeader("Username", string.Empty); 
    var username = request.Headers["Username"] 

    return null; 
} 

但我总是以-1或例外结束。什么是正确的方法来做到这一点?我在Java方面做错了吗?

回答

12

Message类中的Headers属性将为您提供SOAP标题;您正在寻找的是HTTP标题。要得到这些,你应该使用HttpRequestMessageProperty

public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext) 
    { 
     var prop = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name]; 
     var userName = prop.Headers["Username"]; 

     return null; 
    } 
+0

谢谢!很难找到这样的文件.. –