我有以下代码:
var dir = @"Content\Posts\" + yr + @"\" + mnth + @"\";
var a = Path.Combine(dir, dy.ToString() + pId.ToString() + ".txt");
//a contains: "Content\\Posts\\2013\\8\\file01.txt"
stts = obj.NotifyMail(title, writeup, "author@gmail.com", a);
而且在NotifyMail功能中我有这个:
public bool NotifyMail(string subject, string body, string toAdd, string filePath)
{
…
string attachments = HttpContext.Current.Server.MapPath(filePath);
//NOW here attachments contains: "G:\\Program Files\\Derby\\Work\\Development\\proj\\proj\\`Post`\\Content\\Posts\\2013\\8\\file01.txt"
var attchmnts = new LinkedResource(attachments);
attchmnts.ContentId = "attchmnts";
…
}
现在问题发生在NotifyMail
attachments
Server.MapPath
检索通过Post
的物理文件路径时,它返回一个包含无效文件夹的路径,即LinkedResource(attachments);
此文件夹没有它存在于任何地方,甚至不存在于硬盘中,我不知道它是如何被拾取和返回的。但是由于这个问题{"Could not find a part of the path ‘G:\\Program Files\\Derby\\Work\\Development\\proj\\proj\\Post\\Content\\Posts\\2013\\8\\file01.txt"’
正在抛出异常,所以说这个:
{{1}}
答案 0 :(得分:1)
我不相信MapPath保证路径存在,它只是固定到上下文路径的虚拟路径。
我认为你的问题是你正在使用
HttpContext.Current.Server.MapPath
尝试使用
HttpContext.Current.Request.MapPath
答案 1 :(得分:0)
我有一个类似的问题,你只需要添加额外的" \\"在你的文件路径之前加上双反斜杠,如下面和额外的" Post"单词(这是你的班级名字)将会消失。
public bool NotifyMail(string subject, string body, string toAdd, string filePath)
{
string attachments = HttpContext.Current.Server.MapPath(@"\\" + filePath);
var attchmnts = new LinkedResource(attachments);
attchmnts.ContentId = "attchmnts";
}