1

我有以下代码:

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"’
4

2 回答 2

1

我不相信 MapPath 保证路径存在,它只是将您的虚拟路径附加到上下文路径。

我认为你的问题是你正在使用

 HttpContext.Current.Server.MapPath

尝试使用

HttpContext.Current.Request.MapPath
于 2013-08-07T14:57:18.037 回答
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";
    }
于 2017-06-11T12:27:09.790 回答