2013-01-12 48 views
0

我的家庭計算機正在運行Visual Studio 2012和SQL Server 2008 R2。這個網站一直在我的工作電腦上運行VWD10/SQLEXPRESS。我可以訪問並運行所有頁面,但是我的admin.aspx頁面。ASP.NET角色類拋出SQL網絡接口,錯誤:26

登錄成功後,我點擊我的Admin,aspx頁面,該頁面只有一個loginview控件,並且沒有代碼。網站掛起然後我得到的錯誤:

建立到SQL Server的連接時發生網絡相關或實例特定的錯誤。服務器未找到或無法訪問。驗證實例名稱是否正確,並將SQL Server配置爲允許遠程連接。 (提供商:SQL網絡接口,錯誤:26 - 錯誤定位服務器/實例指定)

我刪除了loginview控件,並再次嘗試。沒有頁面代碼&控件正確加載。 我的下一個嘗試是添加到頁面加載:

string str = Roles.GetRolesForUser("Admin").First(); 

這導致了同樣的錯誤,因爲我有我的回覆頁面回到後面的無碼和一個LoginView控件。

我不知道爲什麼角色類不能訪問數據庫,但會員類可以。

這裏是我的web.config,我懷疑是問題所在

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 
<configuration> 
    <location path="~/Admin.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Admin,Maintainer,Manager,Supervisor" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="~/Admin_Machines.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Admin,Maintainer,Manager" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="~/Admin_Workcenters.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Admin,Maintainer,Manager" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="~/Admin_Procedure.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Admin,Maintainer,Manager,Supervisor" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="~/Admin_Users.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Admin,Manager" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="~/Admin_Section.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Admin,Maintainer,Manager" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="~/Admin_Tensile.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Admin,Maintainer,Manager" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="~/Procedures"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <system.web> 
    <roleManager enabled="true" /> 
    <authentication mode="Forms" /> 
    <membership defaultProvider="myProvider"> 
     <providers> 
     <add name="myProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
     connectionStringName="userdb" enablePasswordRetrieval="false" 
     enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="/" 
     requiresUniqueEmail="True" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" 
     minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
     passwordStrengthRegularExpression="" /> 
     </providers> 
    </membership> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     <add assembly="System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> 
     </assemblies> 
     <buildProviders> 
     <add extension=".edmx" type="System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider" /> 
     </buildProviders> 
    </compilation> 
    </system.web> 
    <connectionStrings> 
    <!--Home/School connection(SQLSERVER 2008 R2--> 
    <add name="QualityEntities" connectionString="metadata=res://*/App_Code.Model.csdl|res://*/App_Code.Model.ssdl|res://*/App_Code.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=QUALITY.MDF;user id=sa;password=****;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    <add name="userdb" connectionString="Data Source=.;Initial Catalog=ASPNETDB;uid=sa;Password=****" /> 
    <!--Work Connection(SQLEXPRESS)--> 
    <!--<add name="QualityEntities" connectionString="metadata=res://*/App_Code.Model.csdl|res://*/App_Code.Model.ssdl|res://*/App_Code.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\Quality.mdf;integrated security=True;connect timeout=30;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />--> 
    <!--<add name="userdb" connectionString="data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\ASPNETDB.mdf;integrated security=True;connect timeout=30;user instance=True;multipleactiveresultsets=True;" />--> 
    </connectionStrings> 
</configuration> 
+0

成員類可以訪問用戶數據庫,角色類cannont。第二個連接字符串被註釋掉,以方便在工作/家用計算機之間切換 –

回答

1

所以,問題是,我並沒有定義角色提供,所以它用的是SQLEXPRESS roleprovider。我的家用電腦沒有sqlexpress,這就是爲什麼數據庫在我的工作電腦上工作,而不是我的家用電腦。我可以登錄的原因是我配置了一個會員供應商。

來解決這個問題,我改變

<roleManager enabled="true" /> 

<roleManager defaultProvider="myRoleProvider" enabled="true"> 
    <providers> 
    <clear/> 
    <add 
     name="myRoleProvider" 
     type="System.Web.Security.SqlRoleProvider" 
     connectionStringName="userdb" 
     applicationName="/" /> 
    </providers> 
</roleManager> 
+0

我有同樣的問題,但是當我嘗試將數據庫發佈到外部主機時,所以我有問題:我如何知道提供程序名稱和成員資格有applicationID是什麼,這是否與託管數據庫中提供的產品ID /託管產品ID有關係? –

相關問題