C # делает HTTP положить запрос в хранилище Azure - PullRequest
0 голосов
/ 28 июля 2010

Привет, мне интересно, API Azure BLOB-сервис http://msdn.microsoft.com/en-us/library/dd135733.aspx

можно вызвать с помощью c #. Я хотел бы загрузить файл, например, текстовый документ, в место хранения, http-метод "put", а остальной URL-адрес

"http://myaccount.blob.core.windows.net/mycontainer/myblob"

этот код будет работать?

string username = "user";
string password = "password";
string data = "path to word document;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "PUT";
request.Credentials = new NetworkCredential(username, password);
request.ContentLength = data.Length;
request.ContentType = "text/plain";

using (StreamWriter writer = new StreamWriter(request.GetRequestStream( ))) {
  writer.WriteLine(data);
}

WebResponse response = request.GetResponse( );

using (StreamReader reader = new StreamReader(response.GetResponseStream( ))) {
  while (reader.Peek( ) != -1) {
  Console.WriteLine(reader.ReadLine( ));

1 Ответ

0 голосов
/ 28 июля 2010

Нет, это не сработает.Аутентификация в хранилище Windows Azure включает в себя подпись заголовков запроса.(См. http://msdn.microsoft.com/en-us/library/dd179428.aspx.)

Обратите внимание, что библиотека .NET StorageClient, поставляемая с SDK, распространяется повторно, поэтому вы можете просто добавить ссылку на нее и сделать (из памяти):

 CloudStorageAccount.Parse("<connection string>")
    .CreateCloudBlobClient()
    .GetBlobReference("mycontainer/myblob")
    .UploadByteArray(data);
...