簡體   English   中英

日志記錄。 缺少方法“ WriteWarning”異常

[英]Logging. Missing method 'WriteWarning' exception

我創建了新的ASP.NET vNext項目,並將以下內容添加到Startup.cs中

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole();
        // Add cookie-based authentication to the request pipeline
        app.UseCookieAuthentication(o =>
        {
            o.AuthenticationType = CookieAuthenticationDefaults.AuthenticationType; 
            o.LoginPath = new PathString("/Account/Login");
        });

        app.UseMvc();
        app.UseWelcomePage();

        app.UseIdentity();
    }

並到project.json

"dependencies": {
    "Kestrel": "1.0.0-beta1",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
    "Microsoft.Net.Http.Client": "1.0.0-*",
    "Microsoft.AspNet.Hosting": "1.0.0-beta1",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta1",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta1",

    "Microsoft.Framework.Logging.Console": "1.0.0-beta1",

    "Microsoft.AspNet.Mvc": "6.0.0-beta1",
    "Microsoft.AspNet.Identity": "3.0.0-beta1",
    "Microsoft.AspNet.Security": "1.0.0-beta1",
    "Microsoft.AspNet.Security.Cookies": "1.0.0-*",
},

開始時,我收到以下異常

System.MissingMethodException
Method not found: 'Void Microsoft.Framework.Logging.LoggerExtensions.WriteWarning(Microsoft.Framework.Logging.ILogger, System.String)'.
at Microsoft.AspNet.Security.Cookies.CookieAuthenticationHandler.<AuthenticateCoreAsync>d__1.MoveNext() 
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(TStateMachine& stateMachine) 
at Microsoft.AspNet.Security.Cookies.CookieAuthenticationHandler.AuthenticateCoreAsync() 
at System.Threading.LazyInitializer.EnsureInitializedCore<T>(T& target, Boolean& initialized, Object& syncLock, Func<T> valueFactory) 
at System.Threading.LazyInitializer.EnsureInitialized<T>(T& target, Boolean& initialized, Object& syncLock, Func<T> valueFactory) 
at Microsoft.AspNet.Security.Infrastructure.AuthenticationHandler.AuthenticateAsync() 
at Microsoft.AspNet.Security.Infrastructure.AuthenticationHandler.<BaseInitializeAsync>d__1.MoveNext() 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 
at Microsoft.AspNet.Security.Infrastructure.AuthenticationMiddleware<TOptions>.<Invoke>d__1.MoveNext() 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 
at Microsoft.AspNet.Loader.IIS.KlrHttpApplication.<ProcessRequestAsyncImpl>d__1.MoveNext() 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.GetResult() 
at Microsoft.AspNet.Loader.IIS.HttpApplicationBase.<InvokeProcessRequestAsyncImpl>d__1.MoveNext()N

從另一方面來看,下一行不會引發異常:loggerFactory.Create(“ TestLogger”)。WriteWarning(“某些警告消息”);

回答具體問題

您的問題似乎源於以下事實:您混合了依賴關系的版本,而對於預發行依賴關系,則沒有兼容性欄。 您基本上必須全盤使用相同的版本。

我認為事情從這一行開始:

 "Microsoft.AspNet.Security.Cookies": "1.0.0-*",

這意味着您正在要求提供最新的nuget軟件包,並且取決於您的nuget來源(請共享您的nuget.config),這可能意味着您獲得的該軟件包的版本比其他已標記的軟件包新得多。 β1的

例如:

 "Microsoft.Framework.Logging.Console": "1.0.0-beta1",

嘗試將軟件包標記為1.0.0-beta1。

另一個注意事項

調用中間件的順序很重要,它決定了管道的執行順序。 在您的情況下,您在MVC之后添加了身份,您想將該行移到AddMvc上方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM