我正在尝试使用http://nuget.org/packages/System.Web.Providers使用Visual Studio 2010和Sql Server 2008
一切都可以在我的本地开发框中找到。然而,当我将代码部署到DEV服务器时,当我第一次访问网站时,我会收到以下错误(我在应用程序启动中有创建默认角色和默认成员用户(如果不存在)的代码):
"在应用程序配置中找不到连接名称"LocalSqlServer",或者连接字符串为空。"
我创建了sql脚本来创建SqlMembershipProvider表(当提供程序在本地正确运行时,从临时数据库中反向工程)。正确的表就在那里,使用我的开发框上的主sql server实例可以很好地工作。
我不确定它为什么要在远程DEV服务器上使用旧的提供程序。我认为这是一个权限错误。在我的开发框中,我是一名管理员,使用集成安全。对于DEV服务器,我使用一个SQL server帐户(请参阅下面的连接字符串),它作为SELECT INSERT UPDATE DELETE排列在每个SqlMembershipProvider表上。SQL Server帐户是否需要更多权限?
以下是web.config 中的提供程序值
<profile defaultProvider="DefaultProfileProvider" enabled="true">
<providers>
<add name="DefaultProfileProvider"
type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
connectionStringName="MasterSqlClientConnectionString" applicationName="PortalDEV"/>
</providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider"
type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
applicationName="PortalDEV" connectionStringName="MasterSqlClientConnectionString" enablePasswordRetrieval="true" enablePasswordReset="true"
requiresQuestionAndAnswer="true" requiresUniqueEmail="true" maxInvalidPasswordAttempts="3" minRequiredPasswordLength="8"
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordFormat="Encrypted"/>
</providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider" enabled="true" cacheRolesInCookie="false" cookiePath="/" cookieProtection="All" cookieRequireSSL="true"
cookieSlidingExpiration="true" cookieTimeout="16" maxCachedResults="25">
<providers>
<add name="DefaultRoleProvider"
type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
connectionStringName="MasterSqlClientConnectionString" applicationName="PortalDEV"/>
</providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider" compressionEnabled="true" timeout="16">
<providers>
<add name="DefaultSessionProvider"
type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</providers>
</sessionState>
这是我的连接字符串(数据被屏蔽):
有什么想法吗?
诀窍是在配置文件的节开头添加一行"<clear/>"。ASP.NET通用提供程序1.2-";连接名称';LocalSqlServer';未找到";