为什么使用会话变量时值为空
本文关键字:变量 会话 为什么 | 更新日期: 2023-09-27 18:10:22
我有一个位于我的服务器之一的ASP.net网站,我从同一网络上的本地PC访问该网站。当应用程序运行时,它在C:'PDFFolder
文件夹中保存一个PDF文件。我想显示一个链接,以便用户可以从服务器下载本地PC中的文件。
我正在使用一个会话变量作为文件名:
string strFileName = "completed_pdf_" + k + ".pdf"; //k is a variable within the function
Session["fileName"] = strFileName;
服务器端文件所在目录为:C:'PDFFolder'{filename}.pdf
从本地PC访问该文件是:''myserver'PDFFolder'{filename}.pdf
下载按钮的代码是:
protected void DownloadFile(object sender, EventArgs e)
{
//MessageBox.Show(Session["pathName"].ToString());
//MessageBox.Show(Session["fileName"].ToString());
MessageBox.Show(Path.Combine(@"C:'PDFGenerate", Session["fileName"].ToString()).ToString());
Response.Redirect("DownloadFilePDF.ashx?myvar=" + Session["fileName"].ToString());
}
在下载文件的按钮上,我触发了HttpHandler
函数onclick:
<%@ WebHandler Language="C#" Class="DownloadFilePDF" %>
using System;
using System.Web;
using System.IO;
public class DownloadFilePDF : IHttpHandler {
public void ProcessRequest (HttpContext context) {
System.Web.HttpRequest request2 = System.Web.HttpContext.Current.Request;
string strSessVar2 = request2.QueryString["fileName"];
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "application/pdf";
byte[] fileByteArray = File.ReadAllBytes(Path.Combine(@"C:'PDFGenerate", strSessVar2));
response.AddHeader("Content-disposition", String.Format("attachment; filename={0}.pdf", strSessVar2));
response.BinaryWrite(fileByteArray);
response.End();
}
public bool IsReusable {
get {
return false;
}
}
}
我一直得到一个错误在这行:byte[] fileByteArray = File.ReadAllBytes(Path.Combine(@"C:'PDFGenerate", strSessVar2));
Value cannot be null
如何解决这个问题?
我想你的问题是这一行:
string strSessVar2 = request2.QueryString["fileName"];
您想获得myvar
:
string strSessVar2 = request2.QueryString["myvar"];