2015-04-02 69 views
0

我有一個ASP.NET MVC5應用程序使用Microsoft.Owin 3.0.1配置爲CookieAuthentication。在我的應用程序中,我有一條我想用來基於使用Essential Objects EO.Pdf庫的Razor視圖生成PDF的路線。如何防止OWIN處理路由

當PDF生成過程開始時,會向服務器發出第二個請求,但該請求中不存在auth cookie。 OWIN拒絕請求並重定向到登錄頁面。

是否有可能告訴OWIN忽略某條特定路線?這裏是我的Startup.cs

public partial class Startup 
    { 
     // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 
     public void ConfigureAuth(IAppBuilder app) 
     { 
      // Configure the db context and user manager to use a single instance per request 
      app.CreatePerOwinContext(ApplicationDbContext.Create); 
      app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); 
      app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create); 
      app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create); 

      app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       LoginPath = new PathString("/Account/Login"), 
       Provider = new CookieAuthenticationProvider 
       { 
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
         validateInterval: TimeSpan.FromMinutes(30), 
         regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
       } 
      }); 

      app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 

     } 
    } 

這是導致例外,看似從Owin:

Exception information: 
    Exception type: HttpException 
    Exception message: Server cannot append header after HTTP headers have been sent. 
    at System.Web.HttpHeaderCollection.SetHeader(String name, String value, Boolean replace) 
    at System.Web.HttpHeaderCollection.Set(String name, String value) 
    at Microsoft.Owin.Host.SystemWeb.CallHeaders.AspNetResponseHeaders.Set(String key, String[] values) 
    at Microsoft.Owin.Host.SystemWeb.CallHeaders.AspNetResponseHeaders.set_Item(String key, String[] value) 
    at Microsoft.Owin.Infrastructure.OwinHelpers.SetHeaderUnmodified(IDictionary`2 headers, String key, String[] values) 
    at Microsoft.Owin.Infrastructure.OwinHelpers.AppendHeaderUnmodified(IDictionary`2 headers, String key, String[] values) 
    at Microsoft.Owin.HeaderDictionary.AppendValues(String key, String[] values) 
    at Microsoft.Owin.Infrastructure.ChunkingCookieManager.AppendResponseCookie(IOwinContext context, String key, String value, CookieOptions options) 
    at Microsoft.Owin.Security.Cookies.CookieAuthenticationHandler.<ApplyResponseGrantAsync>d__f.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
+0

爲什麼還有第二個要求?這聽起來像是真正的問題... – 2015-04-02 20:21:24

+0

我不完全確定PDF庫如何生成PDF響應,但它始終導致相同的IIS錯誤(在問題中更新) – 2015-04-02 20:37:49

+0

簽出https://msdn.microsoft .COM/EN-US /庫/ dn337263(v = vs.113)的.aspx。但我同意@ErikPhilips,我將深入到底層問題的根源。 – 2015-04-02 20:43:24

回答

0

原來,這個問題是完全與我的瀏覽器cookie。一時興起,我進入了隱身模式並且工作。非常令人沮喪。然後,我轉回到正常的窗口,刪除了我的cookies,重新進行了身份驗證,並且在OWIN的土地上一切正常。