在 IIS 承载的 WCF 服务中保存文件

本文关键字:服务 保存文件 WCF IIS | 更新日期: 2023-09-27 18:31:17

>问题

当使用绝对文件名(例如。 C:/tinkiwinki/dipsy.lala ) 使用 IIS 中承载的 WCF 服务中的 System.Drawing.Image.Save(Stream, ImageCodecInfo, EncoderParameters) 方法,它不会保存图像,甚至不会引发异常。

背景

我们有一个帮助程序类,它有一个SaveJpeg方法:

public class Tools
{
    public static void SaveJpeg(string path, Image img, int quality)
    {
        if (quality < 0 || quality > 100)
            throw new ArgumentOutOfRangeException("Quality must be between 0 and 100.");
        EncoderParameter qualityParam =
            new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
        ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");
        EncoderParameters encoderParams = new EncoderParameters(1);
        encoderParams.Param[0] = qualityParam;
        img.Save(path, jpegCodec, encoderParams);
    }
}

我们在 WCF OperationContract方法中使用它,如下所示:

string destDirectory = ServerDataFilePath.ImagesPath + @"'" + uploadID.ToString();
if (!Directory.Exists(destDirectory))
    Directory.CreateDirectory(destDirectory);
Tools.SaveJpeg(destDirectory + @"'" + fileName, img, 50);

静态ServerDataFilePath.ImagesPath定义如下:

public class ServerDataFilePath
{
    public static string ImagesPath{ get { return ConfigurationManager.ConnectionStrings["ImagesPath"].ConnectionString; } }
}

它从 Web.config 文件中检索ConnectionString的位置:

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <clear />
    <add name="ImagesPath" connectionString="C:'testServerImagesPath'"/>
  </connectionStrings>
</configuration>

问题

当我们在本地运行它时,它可以完美运行,但是当我们使用 IIS 在测试服务器中部署它时,它不会保存图像,也不会引发任何异常。为什么会这样?

一些约束

代码采用 C#,框架 4,在 Visual Studio 2010 Professional 中构建。该服务部署在 IIS Microsoft Windows Server 2003 R2 中,服务类型为 .NET 4 中的 WCF。

请帮忙。提前谢谢。

在 IIS 承载的 WCF 服务中保存文件

很可能在 IIS 上运行 Web 应用的帐户对C:'tinkiwinki文件夹没有写入权限。