1
我嘗試在azure blob存儲上上傳圖片,而且我很難完成它。下面使用HttpWebRequest時Silverlight 5插件崩潰或請求已被刪除
我'使用的代碼上傳:
public static void Upload(this Stream payLoad, string uri)
{
var webRequest = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(new Uri(uri));
webRequest.Method = "PUT";
webRequest.ContentLength = payLoad.Length;
var state = new HttpWebRequestAsyncState<Stream>() { HttpWebRequest = webRequest, PayLoad = payLoad };
Task.Factory.FromAsync<Stream>(
webRequest.BeginGetRequestStream,
webRequest.EndGetRequestStream, state)
.ContinueWith(t1 =>
{
var asyncState1 = (HttpWebRequestAsyncState<Stream>)t1.AsyncState;
using (var requestStream = t1.Result)
{
int bytesRead = 0;
byte[] buffer = new Byte[4096];
while ((bytesRead = asyncState1.PayLoad.Read(buffer, 0, buffer.Length)) != 0)
{
requestStream.Write(buffer, 0, bytesRead);
requestStream.Flush();
}
}
Task.Factory.FromAsync<WebResponse>(
asyncState1.HttpWebRequest.BeginGetResponse,
asyncState1.HttpWebRequest.EndGetResponse,
asyncState1)
.ContinueWith(t2 =>
{
var asyncState2 = (HttpWebRequestAsyncState<Stream>)t2.AsyncState;
if (asyncState2.PayLoad != null)
{
asyncState2.PayLoad.Close();
}
using (var responce = t2.Result)
{
if (responce != null) responce.Close();
}
});
});
}
當我將DEVELOPPEMENT機器上運行的代碼(在vmware使用Windows 2008 R2 64位),我得到一個插件崩潰,當我打電話說,循環,沒有我可以在我的關卡使用的信息。
當我在我的個人窗口上運行這個代碼時,Windows 7終極64位上傳了一些文件,並且沒有在fiddler中擁有狀態:會話被客戶端,Fiddler或服務器中止。
調用這個代碼是:
private void FileUploadButton_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog() { Multiselect = true, Filter = "Image files (*.jpg)|*.jpg" };
if (ofd.ShowDialog() != true) return;
foreach (var file in ofd.Files)
{
string uri = "http://xxxx.blob.core.windows.net/test/" + file.Name + "?sr=c&si=dev&sig=%2FIKx1NhY8FzgYge7XXXXXXXXXXXXXXXXXXX";
file.OpenRead().Upload(uri);
}
}
是否有人看到我在做錯了嗎?
預先感謝您
我收到以下錯誤 System.Net.WebException:[HttpWebRequest_WebException_RemoteServer] 參數:NotFound 調試資源字符串不可用。關鍵和論據常常提供足夠的信息來診斷問題。請參閱http://go.microsoft.com/fwlink/?linkid=106663&Version=5.0.61118.0&File=System.Windows.dll&Key=HttpWebRequest_WebException_RemoteServer at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Func '2。在System.Threading.Tasks.TaskFactory'1.FromAsyncCoreLogic(IAsyncResult ... – 2012-02-21 13:21:43
)調用(T arg) 當文件超過800K時,似乎發生,我嘗試使用圖像3-5meg,我得到Not Found 可能是Silverlight報告爲Not Found的一種情況? – 2012-02-21 16:04:38