WCF 서비스를 사용하는 웹 페이지가 있습니다. 여러 사용자가 언제든지 웹 페이지를 사용하여 원격 컴퓨터에있는 WCF 서비스에 요청할 수 있습니다.WCF 사용자 지정 헤더 및 세션 추가
웹 페이지의 각 사용자는 고유 한 ID를 얻습니다.이 고유 ID를 해당 사용자가 요청한 각 요청의 요청 헤더에 추가하려고합니다.
지금까지 WCF 메시지에 헤더를 올바르게 추가하는 다음 코드를 작성했습니다. 내가 요청 사이에 지속 할 수있는 ID를 얻을 수 없기 때문에
public class HeaderIdPusher : IClientMessageInspector
{
private static readonly string _balancerKey = "balancerId";
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
Guid userId = Guid.NewGuid();
HttpRequestMessageProperty httpRequestMessage;
object httpRequestMessageObject;
if (request.Properties.TryGetValue(HttpRequestMessageProperty.Name, out httpRequestMessageObject))
{
httpRequestMessage = httpRequestMessageObject as HttpRequestMessageProperty;
if (string.IsNullOrEmpty(httpRequestMessage.Headers[_balancerKey]))
{
httpRequestMessage.Headers[_balancerKey] = userId.ToString();
}
}
else
{
httpRequestMessage = new HttpRequestMessageProperty();
httpRequestMessage.Headers.Add(_balancerKey, userId.ToString());
request.Properties.Add(HttpRequestMessageProperty.Name, httpRequestMessage);
}
return null;
}
public void AfterReceiveReply(ref Message reply, object correlationState)
{
}
}
그러나 나는 더 붙어 오전 없습니다. 현재 요청마다 ID를 생성하고 있지만 HttpContext.Current가 null이므로 사용자가있는 페이지의 세션에 저장할 수 없다는 것을 알 수 있습니다. 이것을 저장하는 또 다른 방법이 있습니까? 내 웹 페이지에서 사용자의 HttpContext를 전달하는 또 다른 방법이 있습니까?
ASP.NET 페이지의 데이터를 IClientMessageInspector로 전달할 수 있습니까? –
WCF 서비스를 호출하는 방법에 대한 자세한 정보를 제공 할 수 있습니까? 그것은 클라이언트에서 또는 asp.net 서버를 통해 직접 있습니까? – Kaido