C# 在Assembly.Loadfile之后,对路径的访问被拒绝

C# 在Assembly.Loadfile之后,对路径的访问被拒绝,c#,asp.net,web,C#,Asp.net,Web,我创建web表单应用程序以上载文件(.exe)以获取程序集版本并删除文件(.exe),但在assembly.LoadFile之后,我无法删除文件,因为显示的错误可能是访问路径被拒绝。请向我解释一下这个问题 protected void uploadBT_Click(object sender, EventArgs e) { if (FileUpload1.HasFile) { try {

我创建web表单应用程序以上载文件(.exe)以获取程序集版本并删除文件(.exe),但在assembly.LoadFile之后,我无法删除文件,因为显示的错误可能是访问路径被拒绝。请向我解释一下这个问题

protected void uploadBT_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            try
            {

                /** Save file to tmp **/
                string filename = FileUpload1.PostedFile.FileName;
                if (Directory.Exists(Server.MapPath("~/FilesUploaded/tmp")))
                {
                    FileUpload1.PostedFile.SaveAs(Server.MapPath("~/FilesUploaded/tmp/" + filename));
                }
                else
                {
                    Directory.CreateDirectory(Server.MapPath("~/FilesUploaded/tmp"));
                    FileUpload1.PostedFile.SaveAs(Server.MapPath("~/FilesUploaded/tmp/" + filename));
                }

                /** get assembly version **/
                Assembly ulf = Assembly.LoadFile(Server.MapPath("~/FilesUploaded/tmp/" + filename));
                string version = ulf.GetName().Version.ToString();

                DirectoryInfo di = new DirectoryInfo(Server.MapPath("~/FilesUploaded/tmp"));

                FileInfo[] fi = di.GetFiles();
                for (int i = 0; i < fi.Length; i++)
                {
                    fi[i].Delete();
                }

                //Directory.Delete(Server.MapPath("~/FilesUploaded/tmp"), true);
                //Thread.Sleep(5);
                //Directory.CreateDirectory(Server.MapPath("~/FilesUploaded/tmp"));

                /** Save each versions **/
                //Directory.CreateDirectory(Server.MapPath("~/FilesUploaded/" + version));
                //FileUpload1.PostedFile.SaveAs(Server.MapPath("~/FilesUploaded/" + version + "/" + filename));
                errTxt.Text = "Completed !";
            }
            catch (Exception ex)
            {
                errTxt.Text = ex.Message.ToString();
            }
        }
    }
protectedvoid uploadBT\u单击(对象发送方,事件参数e)
{
if(FileUpload1.HasFile)
{
尝试
{
/**将文件保存到tmp**/
字符串文件名=FileUpload1.PostedFile.filename;
if(Directory.Exists(Server.MapPath(“~/filesuppled/tmp”))
{
FileUpload1.PostedFile.SaveAs(Server.MapPath(“~/filesuppled/tmp/”+filename));
}
其他的
{
CreateDirectory(Server.MapPath(“~/filesuppled/tmp”);
FileUpload1.PostedFile.SaveAs(Server.MapPath(“~/filesuppled/tmp/”+filename));
}
/**获取程序集版本**/
Assembly ulf=Assembly.LoadFile(Server.MapPath(“~/filesuppled/tmp/”+filename));
字符串version=ulf.GetName().version.ToString();
DirectoryInfo di=newdirectoryinfo(Server.MapPath(“~/filesuppled/tmp”);
FileInfo[]fi=di.GetFiles();
对于(int i=0;i
  • 文件已锁定,因为您已将其加载到内存中
  • 将任意可执行文件加载到web服务器的内存中是一个巨大的安全漏洞。不要这样做!说真的,你根本不知道那档案里有什么
  • 改用这个:

    var version = AssemblyName.GetAssemblyName(
       Server.MapPath("~/FilesUploaded/tmp/" + filename)).Version;
    

  • 文件已锁定,因为您已将其加载到内存中
  • 将任意可执行文件加载到web服务器的内存中是一个巨大的安全漏洞。不要这样做!说真的,你根本不知道那档案里有什么
  • 改用这个:

    var version = AssemblyName.GetAssemblyName(
       Server.MapPath("~/FilesUploaded/tmp/" + filename)).Version;
    

    请参见我的荣幸。很高兴见到你,我的荣幸。快乐编码。