看起来它应该是一个非常简单的主题,所有的例子到处只是几行,但是没有像样的解释,因此我在没有解决方案的情况下继续遇到同样的错误.
简而言之,这部分应用就像这样运行
从db中提取图像
在临时文件夹中创建实际图像文件
创建带有图像的pdf
现在删除已创建的图像.
一切正常,直到删除.我一直在收到错误
InnerException:
System.ArgumentException:不支持URI格式.在System.IO.Path.NormalizePathFast(String path,Boolean fullCheck)...
我尝试了几种不同的方法来完成删除最新的存在:
foreach (string item in TempFilesList) { path = System.Web.HttpContext.Current.Application["baseWebDomainUrl"] + "/temp/" + item; fileDel = new FileInfo(path); fileDel.Delete(); }
在那之前的尝试是:
foreach (string item in TempFilesList) { File.Delete(System.Web.HttpContext.Current.Application["baseWebDomainUrl"] + "/temp/" + item); }
TempFilesList是一个数组列表,包含要删除的图像的路径.
您应该尝试调用Server.MapPath(path)来获取文件的"真实"路径.将它传递给File.Delete,它应该工作(假设文件权限等是正确的)
例如:
foreach (string item in TempFilesList) { path = System.Web.HttpContext.Current.Application["baseWebDomainUrl"] + "/temp/" + item; path = Server.MapPath(path); fileDel = new FileInfo(path); fileDel.Delete(); }
您需要您创建的文件的实际文件路径,而不是您创建的路径的URL.您的代码创建了一个类似于" http://www.mywebsite.com/location/temp/filename.jpg " 的路径.
你需要一些看起来像"C:\ MyWorkingFolder\filename.jpg"的东西.
不过,我建议不要使用Server.MapPath.由于您是在自己的代码中自己创建文件,因此可以控制文件创建位置.相反,请使用它.将其存储在web.config中作为AppSettings键.
例如:
string basePath = ConfigurationManager.AppSettings["PdfGenerationWorkingFolder"]; foreach(string item in TempFilesList) { File.Delete(basePath + item); }