Я работаю над проектом Silverlight. Когда я сохранил jpg-изображение в memystream, чтобы сохранить его в Context.InputStream, он работает нормально. Я вызываю страницу aspx, которая загружает загрузку на сервер.Не удается выполнить Response.Redirect, когда я использую WebClient с Silverlight 4.0 для вызова страницы 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", ложь) тоже, и он не работает. я получил следующее исключение «[System.Threading.ThreadAbortException] = {Невозможно оценить выражение, потому что код оптимизирован или уроженцем кадр на вершине стека вызовов.}»
Есть ли у вас идеи, как я могу сделать перенаправление с помощью WebClient?
Спасибо заранее
Спасибо за ваш ответ, но я не имею метод c.Headers.Add в Silverlight. У меня есть только AllKeys, AsQueryable, Cast, ... но не Add method.I думаю, что вы правы, проблема в том, что заголовки уже написаны. Можете ли вы помочь мне, пожалуйста, исправить это? Thx заранее. – Shimon