- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个 Azure 云应用程序,它将用户登录(成员(member)资格)信息存储到 Azure SQL 数据库中。我们有该数据库的多个版本,一种用于生产,一种用于开发。我们希望我们的开发数据库向全世界开放,并且生产仅限于 Azure 云应用程序。虽然数据库向全世界开放,但一切都运行良好。但是,在我修改 Azure SQL 中的服务器级防火墙规则以限制允许的 IP(不包括我的家庭计算机的 IP)并添加允许家庭计算机的 IP 的数据库级规则后,成员资格停止工作。现在,我可以使用 Microsoft SQL Management Studio 在家中访问数据库,甚至可以使用 Visual-Studio Server Explorer(使用 web.api 中的 connectionString)连接到该数据库。但是,成员(member)资格不再允许从家里连接到数据库。Membership.GetUser() 返回:
{System.Data.SqlClient.SqlException (0x80131904): Cannot open server 'XXXXXX' requested by the login. Client with IP address 'XXX.XXX.59.158' is not allowed to access the server. To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule on the master database to create a firewall rule for this IP address or address range. It may take up to five minutes for this change to take effect. Login failed for user 'visualbee'. This session has been assigned a tracing ID of '23e9447b-f169-49ab-88df-305172323803'. Provide this tracing ID to customer support when you need assistance.
web.config中定义的数据库连接字符串是:
<add name="usersDB" connectionString="data source=XXXX.database.windows.net;Initial Catalog=XXX.YYY.UsersDatabase;User ID=uuu@gggg;Password=pppppp;Encrypt=true;Trusted_Connection=false;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
web.config 中的成员资格和 RoleManager 定义:
<membership defaultProvider="DefaultMembershipProvider" hashAlgorithmType="SHA1">
<providers>
<clear />
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=XXbf3856ad364eXX" connectionStringName="usersDB" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="2147483647" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<roleManager enabled="false" defaultProvider="DefaultRoleProvider">
<providers>
<clear />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=XXbf3856ad364eXX" connectionStringName="usersDB" applicationName="/" />
</providers>
</roleManager>
数据库级防火墙规则:(如您所见,它不排除任何人)
最佳答案
经过尝试,终于找到了解决办法。我向“系统数据库”数据库添加了数据库级规则:
exec sp_set_database_firewall_rule N'AllowAll','0.0.0.0','255.255.255.255'
现在我可以使用成员(member)资格连接到用户数据库。具有适当数据库级防火墙规则的其他数据库也可以公开访问。其余数据库返回“IP 地址为 XXX 的客户端不允许访问服务器”。
关于asp.net - 成员身份不适用于 Azure SQL 数据库级防火墙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28415873/
我是一名优秀的程序员,十分优秀!