Azure中使用托管身份的ASP.NET SqlDataSource空用户登录失败
问题:Azure迁移中使用托管身份连接SQL数据库失败(Login failed for user '')
背景
- 协助客户将运行多年的旧ASP.NET网页迁移至Azure环境,本地环境应用运行正常,仅Azure迁移过程中出现问题
- 本地环境无托管身份,Azure环境仅新增了为SQL连接设置访问令牌的代码
- 应用通过.aspx页面中定义的数十个
asp:SqlDataSource对象处理各类数据库操作,此前使用web.config中的标准连接字符串:
<add name="MyConnectionString" connectionString="Server=tcp:MyDatabaseServer.database.windows.net,1433; Initial Catalog=MyDatabaseName; Persist Security Info=False; MultipleActiveResultSets=False; Encrypt=True; TrustServerCertificate=False; Connection Timeout=30" providerName="System.Data.SqlClient"/>
问题详情
- 出于安全要求,需改用托管身份替代原服务账户模式连接数据库
- 已为
SqlDataSource添加OnSelecting事件以在连接上设置访问令牌,代码未抛出异常,但出现如下错误:
[SqlException (0x80131904): Login failed for user ''.]
- 托管身份已创建,且已被赋予数据库的读写及执行角色
疑问
- 是否需为托管身份设置额外权限或配置?
- 是否应使用其他事件替代
OnSelecting? - 此场景下访问令牌URL是否不同?
- 何处可获取更详细的错误日志?
内容的提问来源于stack exchange,提问作者AndrewS
相关产品推荐
相关产品推荐

