0

ページが更新されても接続IDを保持しようとしています。クライアント側でCookieを保存しましたが、Cookieを取得しようとすると、request.Cookies.Countが0になります。

これはインターフェースの実装です:

public class ConnectionFactory : IConnectionIdPrefixGenerator
{
    public string GenerateConnectionIdPrefix(IRequest request)
    {
        if (request.Cookies["signalrconnid"] != null)
        {
            return request.Cookies["signalrconnid"].Value;
        }

        return Guid.NewGuid().ToString();
    }
}

これは、Start()関数から呼び出されます。

 GlobalHost.DependencyResolver.Register(typeof(IConnectionIdPrefixGenerator), () => new ConnectionFactory());

そしてこれはクライアント側です:

function setCookie(cName, value, exdays) {
    var exdate = new Date(2013,1,1,0,0,0,0);
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString ());
    document.cookie = cName + "=" + c_value;
}

(日付は気にしないでください)

私はそれについてかなりの数の投稿を見ました、しかし私は違いが何であるかわかりません。

4

1 に答える 1

3

@Chris Moutrayが指摘したように、このようにConnectionIdを使用しないのがおそらく最善です。私があなたの立場にある場合は、クライアントでSessionIdを作成し、それをCookieまたはセッションストレージに保存し、connectionIdの代わりにそのsessionIdを渡し、それを長期セッションと短期セッションの間の適切なマッピングとして使用します。用語接続。(マッピングとしてUserIdを使用する場合の問題は、ユーザーが複数の場所から同時にサインオンできることです。)

于 2012-12-31T20:02:33.710 に答える