2014-09-05 5 views
10

Azure 웹 사이트를 Azure blob에 연결하려고합니다 (여기서 컨테이너에있는 파일을 호스트하고 내 웹 사이트에서 파일을 가져 오려고합니다). 나는이 자습서 다음 내 웹 사이트를 구축 한 다음 시작 http://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-get-started/Azure Blob을 Azure 웹 사이트에 연결하기

가 :

나는이 튜토리얼을 시작 내가 푸른 웹 사이트를 사용 이후 http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/#setup-connection-string

, 나는 다음 코드를 추가 내 web.config 파일 (WebApplication1 프로젝트 아래) 뷰 폴더 아래에 web.config 파일도 있지만 수정하지는 않았습니다.

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

나는 튜토리얼의 모든 단계를 수행하고 관련 NuGet 패키지를 설치 한 후 내 Controllers/HomeController.cs 파일에서이 네임 스페이스를 포함 : (

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

내가 ActionResult Index() 방법 다음 문을 추가하는 기본적으로 실행됩니다). 나는 시도하고 솔루션을 실행하면

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

, 지금이 오류를 얻을 :

enter image description here

내가 직접 (내 계정 이름과 키)을 StorageConnectionString의 값을 넣어 시도 대신 다음 진술을 참조하십시오.

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

여전히 같은 오류가 발생합니다. 나는 인터넷에서 아무것도 찾을 수없는 것 같습니다. 어떤 아이디어?

감사합니다.

+0

당신이 몇 가지 유용한 정보를 제공 할 수의 InnerException를 제공 할 경우 도움이 될 수 있습니다. 시도 할 몇 가지 사항 ... 첫 번째로, 두 번째 예는 'DefaultEndpointsProtocol ....'이라는 ConnectionString을 검색하려고 시도하는 것입니다. 둘째, 저장소 계정 문자열을 직접 추가하십시오 (예 : CloudStorageAccount storageAccount = CloudStorageAccount.Parse ("DefaultEndpointsProtocol = https; AccountName = account-name; AccountKey = account-key")). – SeanCocteau

답변

25

코드에 근본적인 실수가 있습니다.

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

는 그런 다음 연결 문자열을 얻으려고 :이 단순히 작동하지 않습니다

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

먼저 당신은 AppSetting을 설정합니다. AppSetting을 설정하면 AppSetting을 읽어야합니다. ConnectionString을 설정할 때 연결 문자열을 읽어야합니다.

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

또는 연결 문자열에 대한 귀하의 라인을 유지하지만,에 Web.config의 변경 :

그래서, 해결책은있는 그대로의 Web.config를 유지하고, 당신이 저장 계정 어디서 줄을 변경 할 수 있습니다 :

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

물론, 당신은 클라우드 스토리지 계정 및 스토리지 계정 키에 대한 실제 값 (account-name은 단순히 작동하지 않습니다) 넣어해야합니다.

3

Azure의 설명서가 더 좋지 않습니다. 실제로이 기사에서는 AppSetting을 작성하라는 메시지를 표시 한 다음 코드에서 ConnectionString을 검색하도록 지시합니다.

대안 수정은 ConnectionString을 같은 세부 사항을 저장하고 여기서 코드를 수정하지 않고 있습니다 :

<add name="StorageConnectionString" connectionString="DefaultEndpointsProtocol=https;AccountName=your-account;AccountKey=your-key" /> 
관련 문제