簡體   English   中英

OperationContext.Current.SessionId為null

[英]OperationContext.Current.SessionId getting null

當我調用服務GetSessionId()時,會話ID獲得空值。 請幫我解決這個問題。

public Response<string> GetSessionId()
{
    Response<string> respn = new Response<string>();
    respn.Succeeded = false;

    try
    {
        _sessionId = OperationContext.Current.SessionId;
        respn.ReturnData = _sessionId;
        respn.Succeeded = true;
    }
    catch (Exception ex)
    {
        respn.Succeeded = false;
        respn.ErrorMsg = ex.Message;
    }
    return respn;
}

在Web.Config文件中,如果在這種情況下將安全模式設置為“消息”和clientCredentialType =“ Windows”,它將獲得會話ID。但是我不能使用任何安全性。

<wsHttpBinding>
    <binding name="SOAPService_EndpointBinding"
             maxReceivedMessageSize="2147483647"
             openTimeout="00:02:00"
             closeTimeout="00:02:00"
             sendTimeout="24:00:00"
             receiveTimeout="24:00:00">          
      <security mode="None">
        <message clientCredentialType="None"/>
      </security>
    </binding>
  </wsHttpBinding>

您正在使用什么綁定? 會話受以下綁定支持

  • NetTcpBinding
  • NetNamedPipeBinding
  • WSHttpBinding(僅在安全性或可靠性已打開的情況下)

解決方法如下,

在合同界面中,將SessionMode屬性設置為Required

[ServiceContract(SessionMode = SessionMode.Required)]

在配置文件中將可靠會話啟用為true

<wsHttpBinding>
    <binding name="SOAPService_EndpointBinding"
             maxReceivedMessageSize="2147483647"
             openTimeout="00:02:00"
             closeTimeout="00:02:00"
             sendTimeout="24:00:00"
             receiveTimeout="24:00:00">          
      <security mode="None">
        <message clientCredentialType="None"/>
      </security>
      <reliableSession enabled="true"/>
    </binding>
  </wsHttpBinding>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM