2013-02-13 74 views
0

我有一個簡單的CLI應用程序來創建/更新/刪除SqlMembershipProvider的用戶。它的工作原理,我可以驗證從CLI應用程序罰款Membership.ValidateUser在一個項目中工作失敗其他

但是,一旦我嘗試從相關的asp.net應用程序執行它,它就會失敗。我真的複製/粘貼相關的web.conf/app.config部分,所以我不知道爲什麼它失敗。

<machineKey validationKey="C94FA3782AAF21E932CAA92DC2A0641951E3A76E50DD25B19C627BA01E259C6CBC7839A7803A59EF3BF855152369A6AB10CC259513BE7ACA4E842B962FD1D8A4" 
       decryptionKey="2EA6D270AD94361ECFDCED5070D76FD67D9A147FEEBC8388FE9B73B450A04560" 
       validation="SHA1" 
       decryption="AES" /> 

    <membership defaultProvider="MembershipProvider"> 
     <providers> 
     <add name="MembershipProvider" type="System.Web.Security.SqlMembershipProvider" 
      connectionStringName="ApplicationServices" 
      enablePasswordRetrieval="false" 
      enablePasswordReset="true" 
      requiresQuestionAndAnswer="false" 
      requiresUniqueEmail="false" 
      maxInvalidPasswordAttempts="5" 
      minRequiredPasswordLength="1" 
      minRequiredNonalphanumericCharacters="0" 
      passwordAttemptWindow="10" 
      passwordStrengthRegularExpression=""/> 
     </providers> 
    </membership> 

這是在web.config和app.config,有人可以解釋爲什麼這將驗證在CLI項目,而不是asp.net項目?

而且要清楚,這裏是不是validationg

Membership.ValidateUser("fake", "fake") // actual test un/pwd combo 

我驗證過聯合國/密碼,其實是正確的代碼。

+0

我可能會在這裏丟失一些明顯的東西,但是當它在Web應用程序中「失敗」時會發生什麼?你是否收到特定的錯誤信息? – jadarnel27 2013-02-13 05:36:32

回答

1

不知道其他任何關於您的應用程序,似乎最可能的問題是配置文件中membership/providers/add節點中的applicationName屬性。請參閱http://msdn.microsoft.com/en-us/library/system.web.security.membership.applicationname.aspx

這些應用程序可能默認爲單獨的應用程序名稱/標識符。因此,當您嘗試通過Web應用程序登錄時,提供程序只能看到授予CLI應用程序的訪問權限。 CLI應用程序可能無法訪問Web根目錄或虛擬路徑信息(沒有http上下文)來創建默認名稱,因此它可能默認爲與Web應用程序applicationName不同的內容。

看看這個鏈接,一個很好的解釋:http://weblogs.asp.net/scottgu/archive/2006/04/22/Always-set-the-_2200_applicationName_2200_-property-when-configuring-ASP.NET-2.0-Membership-and-other-Providers.aspx

您可以通過兩種方式處理這個問題:

  • 嘗試的applicationName設置在兩個結構相同的字符串。

OR

  • 確保有在aspnet_Membership表用戶 「假」 兩個條目。一個用於CLI應用程序,一個用於Web應用程序。您應該找到aspnet_Application表中列出的每個應用程序的applicationID。

這是另一個參考,有人在asp.net應用程序之外使用了SqlMembershipProvider:http://mdrasel.wordpress.com/2011/02/01/asp-net-membership-provider-outside-of-web-application/。請注意使用applicationName屬性。

+0

是的,我發佈後,我意識到我沒有設置應用程序名稱。愚蠢的錯誤。 – Fred 2013-02-14 11:16:52

相關問題