我有一个 asp.net mvc4 Web 应用程序,它使用来自用 C# 编写并托管在带有 Apache / mod_mono 的 Linux 机器上的 API 的数据数据
客户端应用程序是用 C#/asp.net 编写的 - 它运行在不同的 Web 服务器上,也包括 Linux / Apache / mod_mono。我不确定这些细节在这种情况下是否重要,但我认为任何背景都可能有所帮助。
导致这个问题的问题:AppHostBase instance not set - 帮助我对这一切如何组合在一起有了更多的了解。
我相信我现在应该问的正确问题是:在 servicestack(在 API 服务器上)创建会话后,如何正确重新连接到它?
按照前面问题中的答案,我在客户端应用程序的身份验证控制器中使用了这段代码:
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
});
这将返回 ResolutionException:
无法解析 ServiceStack.ServiceInterface.Auth.AuthService 类型的必需依赖项。
在让客户端从 asp.net 应用程序中工作时,我可能会缺少一些简单的东西吗?
如果问题太含糊,我深表歉意,并很乐意提供更多信息。
更新:
这是 AuthController - 对不起,自从我上一篇文章以来,我一直在尝试一些事情:
{
public partial class AuthController : BaseController
{
JsonServiceClient client = new ServiceStack.ServiceClient.Web.JsonServiceClient("<TheAPIurl>");
// GET: /Login/
public ActionResult login()
{
if (Session["IsAuthenticated"] != null)
{
ViewData["Result"] = Session["IsAuthenticated"];
}
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult login(UserModel user)
{
try
{
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;
Session["jsclient"] = client;
FormsAuthentication.SetAuthCookie(user.user_id, true);
return Redirect("/default");
}
else
{
Session["IsAuthenticated"] = false;
}
}
catch (Exception ex)
{
Session["IsAuthenticated"] = false;
}
return View();
}
protected override void ExecuteCore()
{
throw new NotImplementedException();
}
}
}