[英]File paths can't be found from shared library
我有一个应用程序,用户可以查看附加到样本的图像,然后他们需要能够通过电子邮件将该样本的详细信息(包括图像附件)发送给涉众。
在Web应用程序的web.config中,我具有:
<add key="ImagesPath" value="~/Images" />
而且此路径似乎对于检索和显示图像是完美的,这些图像存储在项目的图像文件夹中。
但是,当我尝试将图像作为附件添加到电子邮件( 来自共享库 )时,应用程序突然在调用时找不到带有此错误的路径
message.Attachments.Add(new Attachment(item));
调试时
找不到文件'C:\\ Program Files(x86)\\ IIS Express \\〜\\ Images \\ 3000 \\ 1 \\ 1 \\ 3.png'。
发布后
找不到路径'C:\\ Windows \\ SysWOW64 \\ inetsrv \\〜\\ Images \\ 9251 \\ 1 \\ 1 \\ 1.JPG'的一部分。
我尝试了什么
1。
我尝试在创建附件之前调用此方法
var appDomain = System.AppDomain.CurrentDomain;
var basePath = appDomain.RelativeSearchPath ?? appDomain.BaseDirectory;
var p = Path.Combine(basePath, item);
message.Attachments.Add(new Attachment(p));
但是该应用仍然找不到文件。
我尝试打电话
System.Web.HttpContext.Current.Server.MapPath(item); message.Attachments.Add(new Attachment(item));
在创建每个附件之前,但是同样找不到这些图像。
谁能帮我解决这个问题。
从发布的代码来看,您似乎在调用System.Web.HttpContext.Current.Server.MapPath(item);
方法,但不使用该方法的结果来创建附件。
Server.MapPath
返回文件的物理位置。 使用对该方法的调用结果来添加附件。
这应该工作。
var item = "3000/1/1/3.png";
var fileLocation = Path.Combine("images/",item);
var fullPath = System.Web.HttpContext.Current.Server.MapPath(fileLocation);
message.Attachments.Add(new Attachment(fullPath));
有时,我倾向于在实际尝试访问文件之前先检查文件是否存在。
if (File.Exists(fullPath ))
{
message.Attachments.Add(new Attachment(fullPath));
}
如果从MVC控制器使用它,则可以将Url.Content
和Server.MapPath
一起使用
var p = Server.MapPath(Url.Content("~/images/3000/1/1/3.png"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.