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
класс даст вам заголовки 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;
}