Azure WebRole (MVC アプリ) と Azure Worker ロールがあります。
これで、Owin.SelfHost を使用して、Worker ロールで SignalR ハブをホストできるようになりました。
MVC アプリは、worker ロールでこのハブを呼び出す必要があります。これは非常に簡単です。
今私の問題は認証です。
ハブへの呼び出しを引き続き認証できるように、WebRole で WebRole の Context.User.Identity にアクセスする必要があります。
ワーカーの役割
public class MyHub: Hub
{
public override Task OnConnected() {
var id = Context.User.Identity.Name; // NULL
var connectionId = Context.ConnectionId;
}
[Authorize]
public void SendMessage() ....
}
現在-私はこれにこだわっています
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.Run(async context =>
{
var userName = context.Request.Query["user"]; //NULL
var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationType);
identity.AddClaim(new Claim(ClaimTypes.Name, userName));
context.Authentication.SignIn(identity);
});
.....
});
}
どういうわけか、User.Context (Asp.net ID) を WebRole から Worker ロールの Owin パイプラインに渡す必要があります。
それを行う方法はありますか?