WCF AfterReceiveRequest получить заголовки

Я только начал перехватывать запросы к моей службе WCF.

Я вызываю веб-службу с кодом java, который выглядит так (короткая версия )

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?

1 ответов


на Headers собственность в Message класс даст вам мыло заголовки; что вы ищете адресу 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;
    }