繁体   English   中英

在共享库中找不到文件路径

[英]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));

但是该应用仍然找不到文件。

  1. 我尝试打电话

     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.ContentServer.MapPath一起使用

var p = Server.MapPath(Url.Content("~/images/3000/1/1/3.png"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM