2015-06-03 73 views
1

我有兩個Web應用程序,WCF和MVC共享相同的數據庫。我正在使用Aspnet身份識別2.0電子郵件確認錯誤無效令牌AspNet身份

註冊新用戶時,會創建確認令牌並向用戶發送電子郵件。創建令牌,發送電子郵件大多是在WCF中完成的,驗證是在MVC應用程序中完成的。

var code = UserManager.GenerateEmailConfirmationToken(user.Id); 
string.Format("{0}/Account/ConfirmEmail?userId={1}&code={2}", WebsiteUrl, 
    HttpUtility.UrlEncode(user.Id), HttpUtility.UrlEncode(codeId)); 

我使用相同的數據保護提供

在WCF

var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("MyTestApplication"); 
UserManager.UserTokenProvider = 
       new Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider<ApplicationUser>(
        provider.Create("UserToken")) 
       { 
        TokenLifespan = TimeSpan.FromDays(7) 
       }; 

在MVC

var dataProtectionProvider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("MyTestApplication"); 
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("UserToken")) 
       { 
        TokenLifespan = TimeSpan.FromDays(7) 
       }; 
      } 

來源:Make ASP.NET Identity 2.0 Email confirm token work for WCF and MVC

現在我的問題

  1. 工作正常,在本地主機和質量保證。本地主機上的SSL也測試過。

  2. 生產失敗(使用SSL)。從WCF生成令牌並在MVC中驗證失敗。

  3. 在同一應用程序中生成和驗證作品。

這是怎麼發生的invalid token錯誤?與web.config有什麼關係?

回答

2

發現問題。

這是IIS中的應用程序池。我爲WCF和MVC應用程序使用了不同的應用程序池。現在我把它放在相同的應用程序池,並工作正常。

附加信息:對於那些有同樣的問題和我的解決方案不能解決問題,那麼你可能想嘗試machineKey

http://gunaatita.com/blog/Invalid-Token-Error-on-Email-Confirmation-in-Aspnet-Identity/1056

PS。在我將它發佈到stackoverflow後,我幾乎總能找到答案。謝謝。

+1

謝謝! 'HttpUtility.UrlEncode'爲我做了訣竅,已經配置了machineKey。對於其他關於machineKey,這也是一個很好的答案,幫助我生成:http://stackoverflow.com/questions/23455579/generating-reset-password-token-does-not-work-in-azure-website/23661872 #23661872 – CularBytes

相關問題