2014-01-03 3 views
5

Я пытаюсь использовать ASP.NET Identity и SignalR (2.0.1) в новом проекте по умолчанию.ASP.NET Identity and SignalR

Когда я прокомментирую строку app.MapSignalR(); в классе Запуск, логин работает идеально. Я получаю «пользователь» в методе LogIn, имя пользователя зарегистрированного пользователя отображается на странице (через Context.User.Identity.GetUserName()).

Когда я раскомментирую строку app.MapSignalR(); в классе Запуск, я получаю «пользователь» в методе LogIn, но имя пользователя зарегистрированного пользователя не отображается. Когда я использовал старый memebership и SignalR, все работало нормально. Я что-то пропустил?

protected void LogIn(object sender, EventArgs e) 
{ 
    if (IsValid) 
    { 
     // Validate the user password 
     var manager = new UserManager(); 
     ApplicationUser user = manager.Find(UserName.Text, Password.Text); 
     if (user != null) 
     { 
      IdentityHelper.SignIn(manager, user, RememberMe.Checked); 
      IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); 
     } 
     else 
     { 
      FailureText.Text = "Invalid username or password."; 
      ErrorMessage.Visible = true; 
     } 
    } 
} 


using Microsoft.Owin; 
using Owin; 

[assembly: OwinStartupAttribute(typeof(Tmp.Startup))] 
namespace Tmp 
{ 
    public partial class Startup { 
     public void Configuration(IAppBuilder app) { 
      app.MapSignalR(); 
     } 
    } 
} 
+0

Возможно потому, что у вас есть 2 атрибуты запуска? Где конфигурируется auth? Почему бы не добавить MapSignalR в существующий метод настройки? – davidfowl

ответ

0

Проверьте, что ваши пакеты выглядят так, как будто вы используете webforms и SignalR. SignalR работает на конвейере owin.

Если работает IIS вы необходимы следующие пакеты:

  • Microsoft.Owin.Host.SystemWeb (Owin-приложения для запуска на IIS с помощью трубопровода запроса ASP.NET в вашем случае WebForms)

  • Microsoft.AspNet.SignalR.SystemWeb (Позволяет SignalR работать на IIS с помощью трубопровода запроса ASP.NET)