首页 文章

用于Webjob DashboardConnectionString和StorageConnectionString的Azure SAS令牌

提问于
浏览
1

Azure Web作业要求我在启动时设置AzureWebJobsDashboard和AzureWebJobsStorage属性,但是,我不想在代码中公开AccountKey . 当我尝试使用SAS令牌时,JobHostConfiguration类尝试解析SAS令牌并抛出异常

var config = new JobHostConfiguration();
            config.DashboardConnectionString = ConfigurationManager.GetSetting(KeyVaultSecrets.StorageReadWriteConnectionString);
            config.StorageConnectionString = ConfigurationManager.GetSetting(KeyVaultSecrets.StorageReadWriteConnectionString);

例外

发生System.InvalidOperationException HResult = 0x80131509消息=无法验证Microsoft Azure WebJobs SDK仪表板连接字符串 . Microsoft Azure存储帐户连接字符串格式不正确 . 有关配置Microsoft Azure存储连接字符串的详细信息,请访问http://msdn.microsoft.com/en-us/library/windowsazure/ee758697.aspx . 源=堆栈跟踪:在Microsoft.Azure.WebJobs.Host.Executors.StorageAccountParser.ParseAccount(字符串的connectionString,字符串的connectionStringName,的IServiceProvider服务)在Microsoft.Azure.WebJobs.Host.Executors.DefaultStorageAccountProvider.set_DashboardConnectionString(字符串值)

在为JobHostConfiguration创建配置时,有没有办法使用SAS令牌?

2 回答

  • 0

    此处尚不支持SAS令牌 . 但是,您不需要在代码中放置连接字符串 . You should be placing them in appsettings instead !像这样:

    <configuration>
      <connectionStrings>
        <!-- The format of the connection string is "DefaultEndpointsProtocol=https;AccountName=NAME;AccountKey=KEY" -->
        <!-- For local execution, the value can be set either in this config file or through environment variables -->
        <add name="AzureWebJobsDashboard" connectionString="xxxxxxx" />
        <add name="AzureWebJobsStorage" connectionString="yyyyyyyyy" />
      </connectionStrings>
    

    此外,您可以直接在您的网站上设置您的appsettings .

    也就是说,在最新的夜间版本中,我们现在支持在SAS连接字符串上运行[Timer]和[Singleton];您可以通过将config.DashboardConnectionString显式设置为null来禁用日志记录 . 但我们还不支持将[Blob]和其他存储绑定到SAS网址 . 请参阅此提交中的单元测试:https://github.com/Azure/azure-webjobs-sdk/blob/bd2d9ea34f13fc16569e8d8f80bafdb605eeb6f9/test/Microsoft.Azure.WebJobs.Host.EndToEndTests/InternalStorageTests.cs

  • 1

    我们可以在连接字符串中使用SAS . 由于SAS包含验证请求所需的信息,因此具有SAS的连接字符串提供协议,服务 endpoints 以及根据that link访问资源所需的凭据 .

    这样, StorageAccountParser.ParseAccount(String connectionString) 就可以解析连接字符串

    BlobEndpoint = https://storagesample.blob.core.windows.net; SharedAccessSignature = SV = 2015年4月5日&SR = B&SI =教程政策635959936145100803&SIG = 9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

相关问题