我有一个天蓝色的网络应用程序。
我的解决方案如下:
webjobs是Web应用程序的一部分。它们共享相同的数据层以通过Entity Framework和Azure门户共享数据,当定义应用程序设置时,应用程序设置将覆盖所有项目Web应用程序和Web作业配置文件。
所有项目都有一个连接字符串键作为“DefaultConnection”,用于同一个数据库。
但是我想改变用户(具有更多管理权限)的用户。所以Webjob应该能够ALTER / Truncate表,而MyApp.Web应该只有db_datareader和_db_datawriter角色。
我怎么能多样化这个?如果我更改Azure门户中的连接字符串键以使用具有更改数据库权限的用户,那么这不是一个很好的解决方案,公共面临的应用程序将被赋予不必要的权限。
每个应用程序在Azure门户中都应有自己的“应用程序设置”页面,这样做并不好。这样每个应用程序都可以运行不同的用户权限。
有没有更好的方法来实现这一目标?或者我应该为webjobs的app.config添加新的用户和密码密钥,并在运行内务工作之前读取这些密钥以更新连接字符串?
答案 0 :(得分:1)
我建议不要动态更改connection string
。这可能会造成竞争条件。
如果他们有不同的职责,我建议为这些网络工作添加额外的connection strings
。但是,如果您当前没有注入DbContext
,则可能需要额外的connection string
创建逻辑。
使用不同的connection strings
,如果需要,可以更轻松地将Web作业迁移到其他位置(例如Azure功能或其他任何位置),并且限制您的Web作业执行数据库操作,如果不允许这样做,例如创建用户job仅用于清理审计日志。