Tag: signalr owin

ASP.NET MVC OWIN和SignalR – 两个Startup.cs文件

我的项目有问题。 我使用ASP.NET MVC和ASP.NET Identity 2.0进行身份validation,我将SignalR添加到项目中,所以现在我有两个Startup.cs文件: 第一个来自MVC的根 [assembly: OwinStartupAttribute(typeof(MCWeb_3SR.Startup))] namespace MCWeb_3SR { public partial class Startup { public void Configuration(IAppBuilder app) { ConfigureAuth(app); } } } 和SignalR一个在AppCode文件夹中 [assembly: OwinStartup(typeof(SignalRChat.Startup))] namespace SignalRChat { public class Startup { public void Configuration(IAppBuilder app) { var heartBeat = GlobalHost.DependencyResolver.Resolve(); var monitor = new PresenceMonitor(heartBeat); monitor.StartMonitoring(); // Any connection or hub […]

Owin重启后,SignalR客户端重新连接,但未发布消息

建立: SignalRServer控制台应用程序:Microsoft.AspNet.SignalR.SelfHost v2.0.3 SignalRClient控制台应用程序:Microsoft.AspNet.SignalR.Client v2.0.3 .NET 4.5.1 我做了以下事情: 点击进入客户端,在服务器和客户端再次收到消息 通过点击服务器控制台中的任意键来处理服务器 通过点击服务器控制台中的任意键重新启动服务器 客户端重新连接 点击进入客户端,在服务器上收到消息,但从未再次到达客户端 我希望再次在客户端收到该消息。 我怀疑它与自托管有关,因为我试图在运行IIS的Web应用程序中成功运行客户端。 有任何想法吗? 更新:如果服务器控制台进程被终止并重新启动,则可以重新连接并再次检索消息。 服务器代码 using System; using System.Threading.Tasks; using Microsoft.AspNet.SignalR; using Microsoft.Owin.Hosting; using Owin; namespace SignalRServer { internal class Program { private static void Main(string[] args) { const string url = “http://localhost:8081”; while (true) { using (WebApp.Start(url)) { Console.WriteLine(“Server running on […]

Web API / OWIN,SignalR和授权

我正在开发AngularJS,Web API,SignalR应用程序的原型,作为VS 2013中新项目的潜在起点。 在这个阶段,我几乎使用visual studio为个人用户帐户生成的预制代码。 StartUp.Auth.cs代码中有一行看起来像这样。 app.UseOAuthBearerTokens(OAuthOptions); 有了这个,我可以将[Authorize]属性添加到控制器,它工作正常。 顺便说一句,使用angular我可以在JavaScript中添加包含令牌的标准头,如下所示。 $http.defaults.headers.common.Authorization = ‘bearer ‘ + access_token; 然后我将SignalR添加到项目中。 它支持自己的[Authorize]属性版本,但在使用SignalR时无法传递自定义标头。 这是浏览器方面的限制。 文档说您可以将令牌作为查询字符串的一部分传递。 我在JavaScript端添加了该代码。 我的SignalR代码现在包含了这个。 我将令牌传递为’bearer_token’。 this.connection = $.hubConnection(“/TestHub”, { useDefaultPath: false, qs: “bearer_token=” + token }); 所以我的问题是如何使OWIN识别令牌现在它不再在标题中。 经过多次搜索后,我最终添加了将令牌从查询字符串移动到标头中的代码。 对于我的原型,我刚刚在StartUp.Auth.cs的原始行上方添加了一些代码。 所以,现在它看起来像这样: app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions() { Provider = new OAuthBearerAuthenticationProvider() { OnRequestToken = context => { if (context.Request.Path.Value.StartsWith(“/TestHub”)) { string bearerToken […]