实时服务器

时间:2018-06-12 10:05:10

标签: c# asp.net-mvc path

我有一个我需要在邮件中显示的徽标。在我的本地计算机上显示徽标,但在实时环境所在的服务器上,徽标未显示。

我正在使用这样的路径:

imagePath = "~/Images/email-logo2.png";

email-logo2.png也存在于本地计算机和服务器上的同一文件夹中。

enter image description here

我曾尝试在png存在的服务器文件夹中添加读取权限,但它没有解决问题。你能建议吗?

图片已添加到电子邮件中,如下所示:

HTML:

<img class="auto-style4" src="{PictureSrc}" /><br />

C#代码:

switch (property)
{
    case "PictureSrc":
        string imagePath = "";

        if (User.Identity.GetUserId<int>() == 3140 || 
            User.Identity.GetUserId<int>() == 3142)
        {
            imagePath = "~/Images/email-logo2.png";
        }
        else
        {
            imagePath = "~/Images/email-logo.png";
        }

        content = content.Replace("{" + property + "}", HttpContext.Server.MapPath(imagePath));

1 个答案:

答案 0 :(得分:1)

Server.MapPath返回磁盘上的路径(例如C:\images\image.png),而不是URL。见https://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath(v=vs.110).aspx

因此,从另一台计算机查看电子邮件的用户显然无法解析服务器磁盘上的路径,因此无法访问该磁盘。

您提供的图片路径必须是完全限定的网址,例如http://www.example.com/images/image.png

它在本地工作,因为你和图像所在的机器在同一台机器上,所以它恰好可以访问该路径,但对于使用它的其他人来说并非如此。

或者,如果图片不是太大,您可以将其转换为base64并将其嵌入电子邮件中的HTML中。