Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF服务发送.txt或.xls,但不发送.gz(压缩文件)_C#_.net_Wcf_Zipfile - Fatal编程技术网

C# WCF服务发送.txt或.xls,但不发送.gz(压缩文件)

C# WCF服务发送.txt或.xls,但不发送.gz(压缩文件),c#,.net,wcf,zipfile,C#,.net,Wcf,Zipfile,我已经启动并运行了一个WCF服务,它将文件保存到我的服务器。我已经通过发送一个.txt文件和一个.xls文件对此进行了测试。.xls文件的大小为90kb 现在我有一个压缩文件.gz,大小只有70KB,但当我试图完成这个操作时,我得到了一个 远程服务器返回了意外响应:400 请求错误 当我试图搜索这个错误的请求时,大多数结果都会导致发送一个大文件,并且我需要更改配置文件中的设置 这不是我的原因,因为.gz文件比.xls文件小 有人知道为什么这种类型的文件不能像文本或Excel文件一样发送吗 编辑:

我已经启动并运行了一个WCF服务,它将文件保存到我的服务器。我已经通过发送一个.txt文件和一个.xls文件对此进行了测试。.xls文件的大小为90kb

现在我有一个压缩文件.gz,大小只有70KB,但当我试图完成这个操作时,我得到了一个

远程服务器返回了意外响应:400 请求错误

当我试图搜索这个错误的请求时,大多数结果都会导致发送一个大文件,并且我需要更改配置文件中的设置

这不是我的原因,因为.gz文件比.xls文件小

有人知道为什么这种类型的文件不能像文本或Excel文件一样发送吗

编辑:添加代码

下面是调用服务的方法

        string name = "New Doc";
        string file = @"C:/Users/Admin/Desktop/fileZipped.gz";           
        string ext = file.Split('.')[1]; 

        Stream stream = File.OpenRead(file);
        byte[] bytes = new byte[stream.Length];
        stream.Read(bytes, 0, (int)stream.Length);
        stream.Close();

        var uploadFileServiceClient = new UploadFileServiceClient(); 
        uploadFileServiceClient.UploadFile(name, bytes, ext);
这是我的服务:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]    
public class UploadFileService : IUploadFileService
{
    public bool UploadFile(string name, byte[] bytes, string extension)
    {
        string importDir = ConfigurationSettings.AppSettings["UploadFileDir"];
        if (String.IsNullOrEmpty(importDir))
            return false;

        if (!Directory.Exists(importDir))
            return false;

        string outputFile = Path.Combine(importDir, Guid.NewGuid() + "." + extension);
        string filename = outputFile.Split('\\')[2]; 

        using (StreamWriter sw = new StreamWriter(outputFile))
        {
            sw.WriteLine(bytes);
            sw.Flush();
            sw.Close();
        }
           return true;
    }
}

就像我说的,它适用于文本或Excel文件。

如果两者之间没有过滤代理:


我们也有类似的解决方案,结果是在客户端+服务器上相应地设置MIME类型…

您是否尝试使用它来获取错误的更多详细信息?同时显示一些代码将更容易理解问题所在。请求参数的格式是什么?字节数组?编码字符串?我尝试过跟踪,发现在请求标头中,实体的内容长度为103144,内容类型为,但在响应标头中,内容长度为0?