2013-10-02 4 views
1

Как и многие из моих вопросов ServiceStack, я уверен, что это будет довольно легко.Экземпляр AppHostBase не установлен

У меня есть приложение asp.net MCC4, в котором я использую ServiceStack для аутентификации. Поскольку печенье, сгенерированные клиентом ServiceStack не являются общими, я последовал ответ в такие вопросы, как это решить вопрос:

ServiceStack Session always null in MVC Controller

В моем клиенте у меня есть этот фрагмент кода:

  var authService = AppHostBase.Resolve<AuthService>(); 
      authService.RequestContext = System.Web.HttpContext.Current.ToRequestContext(); 
      var AuthResponse = authService.Authenticate(new Auth 
      { 
       provider = "credentials", 
       UserName = user.user_id, 
       Password = user.password, 
       RememberMe = true 
      }); 


      if (AuthResponse.SessionId != null) 
      { 
       Session["IsAuthenticated"] = true; 
       Session["UserID"] = AuthResponse.UserName; 
       FormsAuthentication.SetAuthCookie(user.user_id, true); 
       return Redirect("/home"); 
      } 
      else 
      { 
       Session["IsAuthenticated"] = false; 
      } 

Когда я пытаюсь запустить приложение, я получаю сообщение об ошибке: "AppHostBase не инициализирована"

Что я могу пропустить? Я заранее извиняюсь за свою неопытность с ASP.net в целом.

Update

Я должен отметить, что это только клиентское приложение MCV4, который будет использовать ServiceStack API, который является частью другого проекта.

Update 2

Я думаю, что это может быть частью моей не совершенного понимания СС и как он будет вписываться в веб-приложения, такие как это. Я считаю, что я действительно могу понять, как именно этот клиент ASP.net может подключиться к существующему сеансу на сервере API ServiceStack.

+0

Что ваш контроллер наследовать от cache provider? И какой метод этот отрывок из? – mickfold

+0

Унаследовано от ControllerBase, этот фрагмент из «общедоступного входа в ActionResult (пользователь UserModel)» – SeanH

ответ

3

вам нужно настроить appbase в контексте mvc4, просто добавьте и запустить конфигурацию apphost и назвать его Whitin глобального файла asax

в моем случае я бегу мой ServiceHost в пустой веб-приложение, но что может работать и для вас mvc4.

protected void Application_Start(object sender, EventArgs e) 
    { 

     new AppServiceHost().Init(); 
     RouteTable.Routes.MapHubs(); 
    } 

в вашем serviceStack Применение:

public class AppServiceHost : AppHostBase 
    { 
     public AppServiceHost() 
      : base("Rest Service", typeof (AnyServiceYouHave).Assembly) 
     { 
      SetConfig(new EndpointHostConfig 
       { 
        //your configuration 
       }); 
     } 

     public override void Configure(Container container) 
     { 
      //Your configuration 
     } 
} 

Edit: для обмена вашего сеанса грим пользователя вы настроили в стек службы

container.Register<ICacheClient>(new MemoryCacheClient()); //or any other 
+0

Да, не инициализация AppHost выглядит как проблема здесь. Кроме того, документы [MVC Integration] (https://github.com/ServiceStack/ServiceStack/wiki/Mvc-integration) предоставляют дополнительную информацию. – mythz

+0

Мы добираемся куда-то: D - Теперь я получаю сообщение об ошибке «Требуемая зависимость типа ServiceStack.ServiceInterface.Auth.AuthService не может быть разрешена». – SeanH

+0

кажется, что ваш контейнер настроен неправильно, не стесняйтесь закрыть этот вопрос и открыть еще одну новую проблему. –

Смежные вопросы