我正在从事 Silverlight 项目。当我将 jpg 图片保存到内存流中以将其保存到 Context.InputStream 中时,它工作正常。我正在调用一个 aspx 页面,该页面将上传内容线程化到服务器中。
但是当上传完成或失败时,我无法执行“response.redirect”或“server.transfer”。是因为我使用 WebClient 从 Silverlight 调用我的 aspx 页面吗?
请在下面的 Silverlight 中找到代码:
private void UploadFile(string fileName, Stream data){
UriBuilder ub = new UriBuilder("http://localhost:52544/WebForm1.aspx");
//add a parameter filename into the queryString
ub.Query = string.Format("filename={0}", fileName);
WebClient c = new WebClient();
c.OpenWriteCompleted += (sender, e) =>
{
PushData(data, e.Result);
e.Result.Close();
data.Close();
};
c.OpenWriteAsync(ub.Uri);
}
在aspx页面上,我有这个代码
protected void Page_Load(object sender, EventArgs e)
{
try
{
// get the filename
string filename = Request.QueryString["filename"].ToString();
// create a file on the server dir
using (FileStream fs = File.Create(Server.MapPath("~/AppData/" + filename)))
{
SaveFile(Request.InputStream, fs);
}
Response.Redirect("uploadOk.aspx", true);
}
catch (Exception ex)
{
}
}
private bool SaveFile(Stream stream, FileStream fs)
{
bool isSaved = true;
byte[] buffer = new byte[4096];
int bytesRead;
try
{
// copy the stream into the file
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0)
{
fs.Write(buffer, 0, bytesRead);
}
isSaved = true;
}
catch (Exception e)
{
isSaved = false;
}
return isSaved;
}
}
我也尝试过 response.redirection("uploadOk.aspx",false) 但它不起作用。我收到以下异常“[System.Threading.ThreadAbortException] = {无法评估表达式,因为代码已优化或本机框架位于调用堆栈顶部。}”</p>
您知道如何使用 WebClient 进行重定向吗?
先感谢您