2014-05-09 7 views
0

나는 Azure blob을 사용하여 이미지를 저장했습니다. 필자는 에뮬레이터가있는 로컬 컴퓨터에서 테스트를 수행하고 작동합니다. 아시다시피, URI를Azure storage (blob)을 어떻게 작동하게합니까?

http://127.0.0.1/xxx 

과 같이 사용합니다.하지만 Azure에 배포 한 후에는 작동하지 않습니다. I은 할

(1)

가 가 가

가 (2) '용기'에 대한 '오프'의 블롭 액세스를 변경

가 (3) 링크 (대신 로컬 에뮬레이트 블롭의) 애저 블롭을 가리 키도록 StorageConnectionString 변경 이 얼룩을 내 웹 사이트에 넣으십시오.

나는 그것이 작동하도록하기 위해 필요한 다른 것을 생각할 수 없습니다.

아무도 도와 줄 수 있습니까?

편집 :

더 많은 정보 : 지역에

: 푸른에

<add key="StorageConnectionString" value="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1" /> 

:

<add key="StorageConnectionString" value="DefaultEndpointsProtocol=http;AccountName=[myAccount];AccountKey=[myKey];BlobEndpoint=http://[myBolbName].blob.core.windows.net/" /> 

푸른에 오류가있다 (나는 버튼을 클릭하면 이미지 업로드) :

01 스토리지 계정이 marvin를 호출하는 경우

http://{accountName}.blob.core.windows.net/{container}/{blobName}

그래서, 컨테이너가 images라고하며 블롭 이름은 banner.png의 URI입니다 : 저장의 Blob를 가리 키도록 23,516,

Application: 2014-05-09T07:45:12 PID[22228] Error  Unable to connect to the remote server 
Application: at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) 
Application: at Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob.UploadFromStreamHelper(Stream source, Nullable`1 length, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) 
Application: at xxx.Utility.AzureStorageAccess.UploadBlob(Stream stream, String containerName, String blobRelativeURI, String& blobURI) 
Application: at xxx.xxx.xxx.btnSubmit_Click(Object sender, EventArgs e) 
+1

일부 코드를 표시하여 도움을받을 수 있습니다. –

+0

웹 사이트의 이미지에 링크하는 경우 [Azure CDN] (http://azure.microsoft.com/en-us/documentation/articles/cdn-how-to-use/)을보아야 할 수도 있습니다.) –

+0

@BrendanGreen - CDN을 가져 오는 이유는 모르겠지만 질문과 관련이 없습니다. 클라이언트가 지리적으로 분산되어있을 때 공개 BLOB 액세스의 대기 시간을 최적화하는 것에 대해 질문하지 않기 때문입니다. 질문은 (잘못 설명 된 동안) blob URI의 적절한 사용에 관한 것입니다. –

답변

2

URI는 것입니다 당신이 원하는하지 않는 사람들이 내가 할 수있는 것을

http://marvin.blob.core.windows.net/images/banner.png

참고가 될 것입니다 컨테이너 안의 얼룩이 없다면 공중 접근 레벨을 blob으로 설정해야 얼룩을 볼 수는 있지만 컨테이너 자체의 작업은 할 수 없습니다.

또한 브라우저에서 이미지가 올바르게 작동하려면 각 blob의 ContentType 속성을 올바른 MIME 유형 (예 : .com)으로 설정했는지 확인해야합니다. image/png.

+0

고맙습니다. 나는이 규칙들을 따랐다 고 생각합니다 ... – martial

+0

'myBlobName'대신에이 URL'BlobEndpoint = http : // [myBolbName] .blob.core.windows.net /'에서 계정 이름을 사용해야합니다. 따라서 Blob 끝 점은'http : // myaccount.blob.core.windows.net /'이어야합니다. –

1

Simon W가 그의 의견을 보내 주신 데 대해 감사 드리며, 코드를 try와 catch로 감싸기 시작하면 문제가 발견되었습니다.

나는 내 코드에 다음이 : 나는 지역에서 BLOB 작업을 만들기 위해 어딘가를 읽을 수 있기 때문에

CloudStorageAccount storageAccount = CloudStorageAccount.Parse("UseDevelopmentStorage=true"); 

내가 이것을 사용, 당신은 "UseDevelopmentStorage = true"로 사용해야합니다.

하지만 이것은 Azure에 배포 할 때 분명히 작동하지 않습니다.그래서 나는 그것을 대체해야 : [my-real-storage-connection-string]이 작동

"DefaultEndpointsProtocol=http;AccountName=[myAccount];AccountKey=[myKey];BlobEndpoint=http://[myBolbName].blob.core.windows.net/" 

입니다

CloudStorageAccount storageAccount = CloudStorageAccount.Parse([my-real-storage-connection-string]); 

.

관련 문제