2014-06-12 13 views
6

tôi kết nối với một cửa hàng blob programatically:Bắt "StorageConnectionString" từ ServiceRuntime: FAIL

string connectionString = CloudConfigurationManager.GetSetting("StorageConnectionString"); 
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); 
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 
... 

App.Config thiết lập của tôi là:

<configuration> 
    <appSettings> 
    <add key="StorageConnectionString" 
     value="DefaultEndpointsProtocol=http;AccountName=ACNAME;AccountKey=MYKEY==" /> 
    </appSettings> 
... 

Kết nối hoạt động. Tuy nhiên tôi thấy thông báo "Bắt" StorageConnectionString "từ ServiceRuntime: FAIL" các bài kiểm tra đơn vị địa phương của tôi:

enter image description here

lý do cho thông điệp này là gì và làm thế nào tôi có thể sửa chữa nó?

Trả lời

10

Tôi đã gặp vấn đề tương tự với Azure Table Storage, nhưng mọi thứ đều hoạt động.

Thêm vào web.config của bạn:

<connectionStrings> 
    <add name="ConnectionTableAzure" connectionString="DefaultEndpointsProtocol=https;AccountName=[ACCOUNTNAMEHERE];AccountKey=[ACCOUNTKEYHERE];TableEndpoint=[ENDPOINTHERE]"/> 
</connectionStrings> 

Thay thế:

storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("ConnectionTableAzure")); 

Bằng cách này:

storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["ConnectionTableAzure"].ConnectionString); 
1

Các giải pháp trước hoạt động, nhưng tôi muốn mở rộng trên nhiều nó.

Nó thay thế giá trị ngay cả khi mã chạy trong sản xuất, tuy nhiên đôi khi bạn thực sự muốn để Azure xử lý cấu hình, trong khi vẫn kiểm soát cửa sổ đầu ra của bạn trong khi gỡ lỗi.

Tôi đã tạo lớp sau để trợ giúp điều đó.

public static class CloudConfigurationManagerExt 
{ 
    public static string GetSetting(string configurationValue) 
    { 
#if DEBUG 
     return System.Configuration.ConfigurationManager.AppSettings[configurationValue]; 
#else 
     return Microsoft.Azure.CloudConfigurationManager.GetSetting(configurationValue); 
#endif 
    } 
} 

sau đó tôi đã thay đổi tất cả các cuộc gọi thành CouldConfigurationManager.GetĐặt thiết bị của tôi.

Từ

string connStr = CloudConfigurationManager.GetSetting("Microsoft.AzureBlobStorage.ConnectionString"); 

Để

string connStr = CloudConfigurationManagerExt.GetSetting("Microsoft.AzureBlobStorage.ConnectionString"); 

và bổ sung các thiết lập trong phần appSetting của web.config, hoặc App.config khi cần thiết.

web.config

<add key="Microsoft.AzureBlobStorage.ConnectionString" value="YourValueHere" /> 

Như bạn có thể nhìn thấy. Nếu bạn đang chạy trong chế độ gỡ lỗi, nó sẽ nhận được giá trị từ ứng dụng, khác theo đường dẫn thông thường cho CloudConfigurationManager.GetSetting

Các vấn đề liên quan