ASP.NET MVC3 アプリケーションのチャット コアとして SignalR 1.0.1 を使用しています。IIS 7.5 の使用
チャット ビューへのアクセスを提供する MVC コントローラーには 2 つの方法があります
。
2. 2 番目の方法へのアクセスは[Authorize]
、ドメイン ユーザー - チャット エージェントの属性で制限されます。
ハブには明示的に指定された承認はありません。
このシナリオでは、IIS で Windows 認証と匿名認証の両方を使用しました。
また、カスタム ロール プロバイダーも実装しました。これはメモリ内でのみ動作し、データベースには何も保持しません。
何が起こるかというと、コントローラー メソッドで '[Authorize]' 属性を使用すると、ハブから 500 が応答されます。これは、呼び出しが承認されたビューから来ている場合と、匿名のビューから来ている場合の両方です。
リクエスト (send
メッセージを送信するための Hub メソッド):
http://localhost:8101/signalr/send?transport=serverSentEvents&connectionToken=VIXEZzWQSn5SNlA8RUy4iaOPDFdvuPBjMvFBiG2FLfvfxF347XHwtapsEV5ndU4OEI0Xb64W2ZRXTqwBiL2CXg2_JlTaTJ2RnVOj4bjvx6tQaYhAqTaXs9k2853GYqzd0
応答:
The connection id is in the incorrect format.
Server stack trace:
at Microsoft.AspNet.SignalR.PersistentConnection.GetConnectionId(HostContext context, String connectionToken)
at Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(HostContext context)
at Microsoft.AspNet.SignalR.Owin.CallHandler.Invoke(IDictionary2 environment)
at Microsoft.AspNet.SignalR.Owin.Handlers.HubDispatcherHandler.Invoke(IDictionary2 environment)
at Microsoft.Owin.Host.SystemWeb.OwinCallContext.Execute()
at Microsoft.Owin.Host.SystemWeb.OwinHttpHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object extraData)<br/><br/>
ただし、Hub への接続は正常に機能し、200 OK が返されることに注意してください。
http://localhost:8101/signalr/connect?transport=serverSentEvents&connectionToken=dYOwFxa1mkgdpzw-jitRpWq9oxRlrTet8U_dAzWjFQEdGNJfVXeG7Op0NZZwvznxeNdJCuPT75CKzQqI9HRPThV3uEDt-Z2qtIl9E02gF481&connectionData=%5B%7B%22name%22%3A%22chathub%22%7D%5D&tid=9
ここで、stackoverflow で類似のスレッドをほとんど見つけませんでした:
signalr 接続 ID が正しくない形式です
私のメソッドを呼び出すとき、ハブはハブへの接続に使用されたものとは異なるSend
リクエストを処理していること、またはハブの発見、そのユーザーは実際には承認されていないことを理解していますが、承認がない場合にその仮定をどのようにチェックするかハブ自体で指定されていますか? Identity
GetConnectionId
誰かがこれに光を当てることができますか?
前もって感謝します :)