2014-09-05 28 views
10

Tôi đang cố gắng kết nối trang web Azure với một blob Azure (nơi tôi định lưu trữ một số tệp trong một vùng chứa và sau đó lấy chúng từ trang web của tôi).Kết nối Azure Blob với Azure Website

Tôi bắt đầu với hướng dẫn này: http://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-get-started/

tôi triển khai trang web của tôi, và sau đó bắt đầu làm theo hướng dẫn này: http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/#setup-connection-string

Kể từ khi tôi đã sử dụng một trang web Azure, tôi đã thêm đoạn mã sau vào tôi tệp web.config (trong dự án WebApplication1). Ngoài ra còn có một tập tin web.config dưới thư mục Views nhưng tôi không sửa đổi điều đó.

<configuration> 
    <appSettings> 
     <add key="StorageConnectionString" 
      value="DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key" /> 
    </appSettings> 
</configuration> 

Tôi đi theo tất cả các bước trong hướng dẫn và cài đặt các gói NuGet liên quan và sau đó bao gồm các không gian tên trong Controllers/HomeController.cs tập tin của tôi:

using System.Configuration; 
using Microsoft.WindowsAzure.Storage; 
using Microsoft.WindowsAzure.Storage.Auth; 
using Microsoft.WindowsAzure.Storage.Blob; 

Sau đó, tôi được thêm vào các tuyên bố sau trong phương pháp ActionResult Index() (mà chạy theo mặc định).

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

Khi tôi cố gắng và chạy các giải pháp, bây giờ tôi nhận được lỗi này:

enter image description here

Tôi cũng đã cố gắng trực tiếp đưa giá trị của StorageConnectionString (với tên tài khoản của tôi và key) thay vì đề cập đến nó trong tuyên bố sau:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key"].ConnectionString); 

Tôi vẫn gặp lỗi tương tự. Tôi không thể tìm thấy bất cứ thứ gì trên internet. Bất kỳ ý tưởng?

Cảm ơn!

+0

Nó có thể có lợi nếu bạn cung cấp InnerException như có thể cung cấp một số thông tin hữu ích. Một vài điều cần thử ... Thứ nhất, ví dụ thứ hai của bạn là cố gắng tìm kiếm một ConnectionString có tên 'DefaultEndpointsProtocol ....' khi đó chỉ là giá trị. Thứ hai, chỉ cần thêm chuỗi tài khoản lưu trữ trực tiếp, nghĩa là CloudStorageAccount storageAccount = CloudStorageAccount.Parse ("DefaultEndpointsProtocol = https; AccountName = tên tài khoản; AccountKey = tài khoản-key"]); – SeanCocteau

Trả lời

25

Bạn có lỗi cơ bản trong mã của mình.

Trước tiên, bạn thiết lập một AppSetting:

<configuration> 
    <appSettings> 
     <add key="StorageConnectionString" 
      value="DefaultEndpointsProtocol=https;AccountName=account- name;AccountKey=account-key" /> 
    </appSettings> 
</configuration> 

Sau đó, bạn cố gắng để có được một chuỗi kết nối:

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

này sẽ chỉ đơn giản là không làm việc. Khi thiết lập AppSetting, bạn cần phải đọc AppSetting. Khi bạn thiết lập ConnectionString, bạn cần đọc chuỗi kết nối.

Vì vậy, giải pháp là chỉ cần giữ web.config như là, và thay đổi dòng mà bạn nhận được tài khoản lưu trữ để:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]); 

Hoặc giữ cho dây chuyền cho các chuỗi kết nối nhưng thay đổi web.config để :

<configuration> 
    <connectionStrings> 
     <add name="StorageConnectionString" 
      connectionString="DefaultEndpointsProtocol=https;AccountName=account- name;AccountKey=account-key" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
</configuration> 

Và tất nhiên, bạn phải đặt giá trị thực cho tài khoản lưu trữ đám mây và khóa tài khoản lưu trữ (account-name sẽ không bao giờ hoạt động).

3

Đây là tài liệu xấu hơn từ Azure, bài viết thực sự cho bạn biết để tạo ra một AppSetting và sau đó mã cho bạn để lấy một ConnectionString.

Việc sửa chữa thay thế là để lưu trữ các thông tin chi tiết như một ConnectionString và để lại các mã như là:

<add name="StorageConnectionString" connectionString="DefaultEndpointsProtocol=https;AccountName=your-account;AccountKey=your-key" /> 
Các vấn đề liên quan