[ASP.net] 此內容中不允許非同步作業。啟動非同步作業的網頁必須將 Async 屬性設定為 true,而且只能在 PreRenderComplete 事件之前啟動非同步作業。
2011/04/01
今天再用ASP.net 寫上傳檔案POST 到一個接收網址..
程式碼如下:
private static void PushData(Stream input, Stream output)
{
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) != 0)
{
output.Write(buffer, 0, bytesRead);
}
}
public void UploadFile(string fileName, string newfilename, bool isMerge, Stream data, string dir, string type)
{
try
{
//UriBuilder ub = new UriBuilder("http://127.0.0.1:81/risiv.ashx");
UriBuilder ub = new UriBuilder("http://image.xxxxx.com/risiv.ashx");
if (isMerge)
ub.Query = string.Format("filename={0}&newfilename={1}&merge=true", fileName, newfilename);
else
ub.Query = string.Format("filename={0}&newfilename={1}&merge=false", fileName, newfilename);
WebClient c = new WebClient();
c.OpenWriteCompleted += (sender, e) =>
{
PushData(data, e.Result);
e.Result.Close();
data.Close();
};
c.OpenWriteAsync(ub.Uri);
}
catch (Exception ex)
{
var root = System.AppDomain.CurrentDomain.BaseDirectory.ToString();
File.WriteAllText(root + "log.txt", ex.Message + "\r\n" + ex.StackTrace);
}
}
但是一直出現…
此內容中不允許非同步作業。啟動非同步作業的網頁必須將 Async 屬性設定為 true,而且只能在 PreRenderComplete 事件之前啟動非同步作業。
於 System.Web.AspNetSynchronizationContext.OperationStarted()
於 System.Net.WebClient.OpenWriteAsync(Uri address, String method, Object userToken)
於 System.Net.WebClient.OpenWriteAsync(Uri address)
原來是要在.aspx 第一行加上一屬性敘述..
Async="true"
使得第一行如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Async="true" Inherits="TestASPXUploader._Default" %>
就可以了…
希望之後有人碰到…
可以節省點時間…
讚一下:
訂閱:
張貼留言 (Atom)
0 意見:
張貼留言