从OWIN获取诊断输出

时间:2018-07-11 16:22:12

标签: oauth owin

我试图找出为什么某些用户无法使用第三方oAuth服务器作为身份提供者登录我们的Web应用程序。

在让Microsoft.Owin告诉我有关问题是什么方面的重大失败。

控制器上的身份验证方法如下:

    [System.Web.Mvc.AllowAnonymous]
    public ActionResult Authentication([FromUri] string code, [FromUri] string state, [FromUri] string sessionState)
    {
        openIdClient.Authenticate(Request.GetOwinContext(), code, state);
        logger.Info($"OwinLog is: {Request.GetOwinContext().TraceOutput}" );
        Session[Auth] = true;
        return RedirectToRoute("BilInfoLandingPage", new RouteValueDictionary
        {
            {"reference", Session[BiReference]},
            {"productType",  Session[ProductType]},
            {"productId",  Session[ProductId]}
    });
    }

到目前为止,我已经尝试在OwinStartup中调用

app.Properties["host.TraceOutput"] = new StringWriter();

,然后在尝试授权后检查TraceOutput。但是其类型与标准owin版本相比没有变化。

我还尝试通过loggerfactory的以下实现方式呼叫app.SetLoggerFactory(new LoggerFactory());

        private class LoggerFactory : ILoggerFactory
    {
        public ILogger Create(string name)
        {
            return new OwinLogger(name);
        }
    }

    private class OwinLogger : ILogger
    {
        private readonly ILog log4NetLog;

        public OwinLogger(string name)
        {
            log4NetLog = LogManager.GetLogger($"owin.logbridge.{name}");
        }
        public bool WriteCore(TraceEventType eventType, int eventId, object state, Exception exception, Func<object, Exception, string> formatter)
        {
            log4NetLog.Info($"{eventType}, eventId = {eventId} stateType={state.GetType()}, state={state}", exception);
            return true;
        }
    }

在调试器下,我可以看到Create方法确实被多次调用,但从未调用过WriteCore。

我还尝试在System.Diagnostics中设置跟踪,但结果同样糟糕。

任何帮助或指针将不胜感激。

0 个答案:

没有答案