由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。
今天在做一个下载功能的页面,出了这样的问题:
我从a页面用Server.Execute("b.aspx?value="+value);
b页面的代码如下:
string filePathStr = Page.Request["filePath"];
List<string> filePathList = new List<string>();
if (filePathStr != null && !string.IsNullOrEmpty(Request.QueryString["filePath"].ToString()))
{
filePathStr = filePathStr.ToString().Replace(@"$$", @"\");
filePathList = filePathStr.Split('$').ToList();
}
string fileFolder = this.Request.PhysicalApplicationPath + "\\DownloadTemp\\" + string.Format("{0:yyyyMMddHHmms}", DateTime.Now);
if (System.IO.Directory.Exists(fileFolder) == false)
{
System.IO.Directory.CreateDirectory(fileFolder);
}
foreach(string filePath in filePathList)
{
this.FileCopy(filePath, fileFolder);
}
//压缩文件夹
string[] FileProperties = new string[2];
FileProperties[0] = fileFolder + "\\";
FileProperties[1] = fileFolder + ".zip";
if (FileProperties[0][FileProperties[0].Length - 1] != Path.DirectorySeparatorChar)
FileProperties[0] += Path.DirectorySeparatorChar;
ZipOutputStream s = new ZipOutputStream(File.Create(FileProperties[1]));
s.SetLevel(6); // 0 - store only to 9 - means best compression
zip(FileProperties[0], s, FileProperties[0]);
s.Finish();
s.Close();
//删除临时文件夹
this.DeleteFolder(fileFolder);
//压缩文件下载
try
{
FileInfo fileinfo = new FileInfo(fileFolder + ".zip");
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileinfo.Name, System.Text.Encoding.UTF8) + ";charset=GB2312");
Response.AppendHeader("Content-Length", fileinfo.Length.ToString());
Response.WriteFile(fileinfo.FullName);
//HttpContext.Current.ApplicationInstance.CompleteRequest();
Response.Flush();
Response.End();
}
catch(Exception ex)
{
string message = ex.Message;
Response.Flush();
Response.End();
}
finally
{
File.Delete(fileFolder + ".zip");
}
最终在Response.End();这里有异常:
由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。
各位大侠给看看吧。到底怎么回事?