2013-01-20 4 views
0

새 리소스에 대한 공유 액세스 서명을 만들 때 (사용자가 내 스토리지 계정에 새 리소스를 만들 수있는 만들기 권한이 있어야 함). MS 설명서가 오래되어 사용하지 못했던 다른 블로그 게시물을 사용하여 작동하지 않는 것 같습니다. 나는 푸른 시작하늘빛 공유 액세스 서명 생성

http://127.0.0.1:10000/devstoreaccount1/photos/photos_4.jpg?sv=2012-02-12&se=2013-01-20T10%3A13%3A17Z&sr=b&sp=rw&sig=xxx 

(올바른 것으로 보이는) 다음과 같습니다

public static string GetBlobSharedAccessSignitureUrl(CloudBlobContainer container,string nameOfBlobToCreateSaSfor) 
     { 
      var blob = container.GetBlockBlobReference(nameOfBlobToCreateSaSfor); 
      var policy = new SharedAccessBlobPolicy 
          { 
           SharedAccessExpiryTime = DateTime.Now.AddHours(1), 
           Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Read 
          }; 


      container.GetSharedAccessSignature(policy); 
      string sas = blob.GetSharedAccessSignature(policy); 

      return blob.Uri.AbsoluteUri + sas; 

     } 

과 (내 로컬 컴퓨터에 대한) 반환 된 URL :

는 지금 내 코드는 지금처럼 보인다 저장 시뮬레이터 및 피들 러가이 URL에 POST를 시도했습니다 (PUT 시도)

오류 발생 (404 또는 400, 시도한이 기능의 다른 코드에 따라 다름)

다른 조치가 필요합니까? (예전의 예제에서 나는 그것들이 손에 들어 오기 전에 그 위치에서 리소스를 생성하는 것을 보았습니다 - 나는 또한 시도했지만 시도하지 않았습니다 ...)

Azure SDK 버전은 2.0이므로 MS 블로그 게시물 2012년 10월 전에 다른 튜토리얼)도 MS dev에 블로그 http://blogs.msdn.com/b/windowsazurestorage/archive/2012/10/29/windows-azure-storage-client-library-2-0-breaking-changes-amp-migration-guide.aspx)

당신이 피들러를 통해 또는 코드를 통해 게시하는 경우 어떤 도움, 당신은 추가 확인하십시오

답변

1

을 감상 할 수있다 "x 축에 따라 (깨진 ms-blob-type "요청 헤더를 만들고"BlockBlob "값으로 설정합니다. 파일 업로드를 시도하는 샘플 코드를 확인하십시오.

   FileInfo fInfo = new FileInfo(fileName);//fileName is the full path of the file. 
       HttpWebRequest req = (HttpWebRequest)WebRequest.Create(blobSaSUrl); 
       NameValueCollection requestHeaders = new NameValueCollection(); 
       requestHeaders.Add("x-ms-blob-type", "BlockBlob"); 
       req.Method = "PUT"; 
       req.Headers.Add(requestHeaders); 
       req.ContentLength = fInfo.Length; 
       byte[] fileContents = new byte[fInfo.Length]; 
       using (FileStream fs = fInfo.OpenRead()) 
       { 
        fs.Read(fileContents, 0, fileContents.Length); 
        using (Stream s = req.GetRequestStream()) 
        { 
         s.Write(fileContents, 0, fileContents.Length); 
        } 
        using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) 
        { 
        } 
       } 
관련 문제