我有一个复杂的项目,包括ASP MVC网站,ASP SignalR中心和Xamarin移动应用程序(所有三个独立的项目)。因为ASP MVC Web引用SignalR集线器并且两者都在一起托管,所以两个项目只能有一个OWIN Startup类(否则我会收到一条错误,说只有一个OWIN Startup类)。由于我在Web应用程序中也使用ASP Identity,因此我调用app.UseCookieAuthentication
方法,然后在允许我与SignalR中心通信之前需要cookie。因此,Xamarin移动应用程序和SignalR中心之间的通信是不可能的。
我相信,这个问题可以用两种不同的方式回答:
response.Cookies[FormsAuthentication.FormsCookieName]
,但Xamarin中不提供FormsAuthentication.FormsCookieName
。我该如何创建cookie?在访问SignalR集线器之前,我是否可以调用Web应用程序登录方法?答案 0 :(得分:0)
当然可以从Xamarin传递身份验证Cookie。在某种程度上,你正在进行http呼叫; http调用可以包含标头,而cookie只是一个专门的标头。检查您使用的交互的HTTP流量,并注意应该有一个带有.aspnetcookie行名称的标题,以及name = reallylongstringoflettersandnumbers行的值;您可以创建一个API方法,该方法接收用户和密码并授权用户,获取从该请求发回的cookie,并将其包含在任何将来的请求中,包括SignalR请求。我正在做同样的事情,如果你找不到你需要的东西,请随时寻求更多的帮助。