私は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を使用してリダイレクトを実行する方法を知っていますか?
前もって感謝します