Я работаю над проектом Silverlight.
Когда я сохранил изображение JPG в потоке памяти, чтобы сохранить его
в Context.InputStream, он работает нормально.
Я вызываю страницу aspx, которая загружает поток на сервер.
Но я не могу сделать «response.redirect» или «server.transfer», когда загрузка завершена или не удалась.
Это потому, что я вызываю страницу aspx из Silverlight с помощью WebClient?
Пожалуйста, найдите код в 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] = {Невозможно оценить
выражением, потому что код оптимизирован или собственный фрейм находится над стеком вызовов.} ”
У вас есть идея, как я могу сделать перенаправление с помощью WebClient?
Заранее спасибо