asp.Net中的虚拟路径异常

时间:2010-03-08 18:29:35

标签: asp.net

我必须将文件保存到物理文件夹。但我得到以下例外。 “路径不是虚拟路径”如何将物理路径更改为虚拟路径。我该如何解决这个问题

Grades grade = new Grades(); 
grade.Exam = Exams.Search(ddlExam.SelectedValue); 
grade.Person = Person.GetStudent(ddlStudent.SelectedValue); 
try{ 
     if (afuPaper.HasFile) 
     { 
          string strPath = Server.MapPath(grade.Exam.FileUrl) + ddlExam.SelectedValue + 
               grade.Person.TcNo + Path.GetFileName(afuPaper.FileName);
          afuPaper.SaveAs(strPath); grade.GradeJpeg = strPath; 
     }
}

3 个答案:

答案 0 :(得分:0)

等级=新等级();             grade.Exam = Exams.Search(ddlExam.SelectedValue);             grade.Person = Person.GetStudent(ddlStudent.SelectedValue);

        try
        {

            if (afuPaper.HasFile)
            {

                string strPath = Server.MapPath(grade.Exam.FileUrl) + ddlExam.SelectedValue + grade.Person.TcNo + Path.GetFileName(afuPaper.FileName);
                afuPaper.SaveAs(strPath);
                grade.GradeJpeg = strPath;

            }

答案 1 :(得分:0)

grade.Exam.File Url是一个物理路径,如C:\ File \ Paper1

答案 2 :(得分:0)

Server.MapPath需要虚拟路径并将其转换为物理路径。

假设您需要SaveAs的物理路径,那么您可以简单地删除该呼叫。

MapPath方法用于将虚拟路径(如“〜/ Location / File.aspx”)转换为物理路径,例如“C:\ inetput \ wwwroot \ MyApplication1 \ Location \ File.aspx”

编辑:修改代码

    try
    {
        if (afuPaper.HasFile)
        {
            string strPath = Path.Combine(grade.Exam.FileUrl, ddlExam.SelectedValue + grade.Person.TcNo + Path.GetFileName(afuPaper.FileName));
            afuPaper.SaveAs(strPath);
            grade.GradeJpeg = strPath;

        }

请注意,我还包含对Path.Combine的调用,这是组合文件夹和文件名的首选方法(如果需要,它会在FileUrl和其他任何内容之间自动添加\)