2012-08-14 81 views
0

在特定頁面上調用Membership.GetUser()時(該網站這樣做的第一個頁面,因爲我們實施適當的安全控制)成員資格提供產生意外SQL錯誤

System.Data我收到以下錯誤。 SqlClient.SqlException(0x80131904):用戶'IIS APPPOOL \ UAT SITE'登錄失敗。在 .... 在System.Web.Security.SqlMembershipProvider.GetUser(字符串的用戶名,布爾userIsOnline)在System.Web.Security.Membership.GetUser(字符串的用戶名,布爾userIsOnline)

該網站運行良好在IIS Express,但UAT是IIS 7.5下的2008R2

的Web.Config

<authentication mode="Windows" /> 
    <identity impersonate="True" /> 
    <authorization> 
     <deny users="?" /> 
     <allow users="*" /> 
    </authorization> 
    <membership> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DatabaseGTN" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="GTN" /> 
     </providers> 
    </membership> 
    <roleManager enabled="true"> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="DatabaseGTN" applicationName="GTN" /> 
     </providers> 
    </roleManager> 

在該網站的 「身份驗證」 節點,ONLY ASP.NET模擬和Windows身份驗證啓用 Web服務器Windows身份驗證功能已安裝根據服務器經理。

使用相同的連接字符串引用,網站上的所有其他頁面都可以非常愉快地運行,並且審計日誌記錄表明在MS SQL中由SYSTEM_USER返回正確的用戶名COMPANY \ MyName,因此它看起來像其他所有SQL請求正如預期的那樣冒充。

對於我可能忽略的配置選項的任何建議將不勝感激。

我應該說得更清楚。 而不是添加額外的數據庫用戶或角色,我想讓模擬正常工作。 或者我想告訴我的老闆爲什麼不能這樣做。

回答

0

我能想到的唯一一件事,看看你的錯誤,是確保已經將你的數據庫的訪問權限添加到「IIS APPPOOL \ UAT SITE」。

要檢查,只需打開Sql Server管理控制檯並查看安全節點是否有此用戶。

比在此用戶的屬性看下「用戶映射」,看看你的數據庫的授權是否正常。

+0

謝謝。但這正是我想要允許的。只有屬於特定用戶組的用戶才允許訪問數據庫。而且它對於成千上萬的其他數據庫調用來說非常令人滿意,只是不適合會員提供商正在執行的調用。 – 2012-08-14 02:52:06