我刚开始学习Ninject但是遇到了记录器的问题.我目前有一个控制器,它有一个服务和记录器注入到构造函数中,如下所示:
public ToolsController(IToolsService toolsService, ILogger logger)
{
logger.Info("ToolsController Created");
this.toolsService = toolsService;
this.logger = logger;
}
Run Code Online (Sandbox Code Playgroud)
问题出在构造函数中的logger.Info行(例如),它似乎使用了错误的记录器,因此它打印出的记录器名称不正确.
Tools.IGeocodeImporter: ToolsController Created
Run Code Online (Sandbox Code Playgroud)
以下是如何设置获取记录器名称:
kernel.Bind<ILogger>().To<Logger>().WithConstructorArgument("name", x => x.Request.ParentContext.Request.Service.FullName);
Run Code Online (Sandbox Code Playgroud)
任何意见,将不胜感激.
所以我有C++ Player项目,它有2个其他项目依赖项,这两个项目依赖项都有后期构建事件将dll复制到另一个文件夹.该项目正在建设中,然后它决定不随机工作,从那时起我就没有找到解决方案.即使从SVN清理结账,它仍然无法正常工作,除了我之外,它适用于所有其他开发人员.
我已经检查了错误消息中的路径,它们确实存在,目标dll也是如此.
每个依赖项目中的构建后事件:
copy $(TargetPath) $(ProjectDir)..\..\$(Configuration)\plugins\$(ProjectName).dll
Run Code Online (Sandbox Code Playgroud)
结果错误:
错误MSB3073:命令"copy C:\ CMDev\CM2\Client\Apps\SSEP\Player\ACRP\CIAP\Debug\CIAP.dll C:\ CMDev\CM2\Client\Apps\SSEP\Player\ACRP\CIAP. ...\Debug\plugins\CIAP.dll:VCEnd"退出代码1. C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets 131 5
目前的设置:
我试过了什么:
我还能尝试什么?
更新:
我已将代码更改为FormsAuthentication.SetAuthCookie(_model.UserName, true);.我有2个Web.config文件,1个用于MVC,另一个用于WebAPI.在MVC配置中,我定义了
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
两个应用程序都在同一个域中.
更新:我们是否应该在WebAPI中使用Cookie?
目前,我有一个MVC项目,它使用表单身份验证和WebAPI项目.问题是我无法在WebAPI项目中获得与请求关联的用户.我认为这是可能的,或者实施可能是错误的?
注意:我把cookie代码放在WebAPI控制器方法中作为测试,它不应该在哪里.
MVC - 处理登录请求,创建身份验证票证.
// POST: /Account/Login
[AllowAnonymous]
[HttpPost]
public ActionResult Login(LoginModel _model, string _returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(_model.UserName, _model.Password))
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(_model.UserName, true, 15);
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(cookie);
// set redirect
}
}
// If we got this far, something failed, redisplay form
return View(_model);
}
Run Code Online (Sandbox Code Playgroud)
WebAPI - 处理更新请求
[AcceptVerbs("PUT")]
public …Run Code Online (Sandbox Code Playgroud)