Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure应用程序服务中具有不同用户权限的单个连接字符串_C#_Azure_Azure Webjobs_Azure Web App Service_Azure Application Settings - Fatal编程技术网

C# Azure应用程序服务中具有不同用户权限的单个连接字符串

C# Azure应用程序服务中具有不同用户权限的单个连接字符串,c#,azure,azure-webjobs,azure-web-app-service,azure-application-settings,C#,Azure,Azure Webjobs,Azure Web App Service,Azure Application Settings,我在azure中有一个web应用程序 我的解决方案如下: MyApp.Web MyApp.webjobstasks MyApp.WebjobAnotherTask webjobs是web应用程序的一部分。它们都共享相同的数据层,以便按实体框架访问数据,并且在Azure portal中定义应用程序设置时,应用程序设置将覆盖所有项目web应用程序和web作业配置文件中的数据 所有项目都有一个连接字符串键作为“DefaultConnection”,用于连接到同一数据库 但是我想更改webjobs的用户

我在azure中有一个web应用程序

我的解决方案如下:

  • MyApp.Web
  • MyApp.webjobstasks
  • MyApp.WebjobAnotherTask
  • webjobs是web应用程序的一部分。它们都共享相同的数据层,以便按实体框架访问数据,并且在Azure portal中定义应用程序设置时,应用程序设置将覆盖所有项目web应用程序和web作业配置文件中的数据

    所有项目都有一个连接字符串键作为“DefaultConnection”,用于连接到同一数据库

    但是我想更改webjobs的用户(有更多权限进行内务管理)。因此Webjob应该能够修改/截断表,而MyApp.Web应该只有db_datareader和db_datawriter角色

    我怎样才能做到这一点?如果我在Azure portal中更改连接字符串键以使用有权更改数据库的用户,那么这不是一个好的解决方案,因为面向公众的应用程序将获得不必要的权限

    如果每个应用程序在Azure portal中都有自己的应用程序设置页面,那就太糟糕了。这样每个应用程序都可以运行不同的用户权限


    有没有更好的方法来实现这一点?或者,我应该为webjobs的app.config添加新的用户和密码密钥,并在运行内部维护作业之前读取这些密钥以更新连接字符串?

    我建议不要动态更改
    连接字符串。这可能会创造比赛条件

    如果这些web作业有不同的职责,我建议为它们添加额外的
    连接字符串。但是,如果当前未注入连接字符串,则可能需要额外的逻辑来创建
    DbContext


    使用不同的
    连接字符串
    可以更容易地将web作业迁移到另一个位置(即Azure函数或其他任何位置),如果需要,您的web作业将被限制执行不允许执行的db操作,例如,如果作业仅用于清理审核日志,则创建用户。

    我也考虑过这一点。但是连接字符串名称在dbcontext中是硬编码的。我需要更改全部以插入连接字符串名称。