Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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# ServiceStack客户端添加附件_C#_Soap_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,Soap,servicestack" /> servicestack,C#,Soap,servicestack" />

C# ServiceStack客户端添加附件

C# ServiceStack客户端添加附件,c#,soap,servicestack,C#,Soap,servicestack,我正在使用ServiceStack.ServiceClient.Web.XmlServiceClient连接到Web服务。有没有办法向请求添加附件 更多信息: 我试图避免使用Microsoft.Web.Services2,因为我使用的是Mono。我正试图上传一个XML数据文件和一个XML请求。就像这个问题一样: 上传文件最好(也是最快)的方法是不要将其编码为普通请求变量,而只需将其上传到web服务,作为一个普通的HTTP上传,使用ContentType多部分/表单数据,即HTML表单当前如何将文

我正在使用ServiceStack.ServiceClient.Web.XmlServiceClient连接到Web服务。有没有办法向请求添加附件

更多信息:

我试图避免使用Microsoft.Web.Services2,因为我使用的是Mono。我正试图上传一个XML数据文件和一个XML请求。就像这个问题一样:

上传文件最好(也是最快)的方法是不要将其编码为普通请求变量,而只需将其上传到web服务,作为一个普通的HTTP上传,使用ContentType多部分/表单数据,即HTML表单当前如何将文件发送到url

内置支持以这种方式处理上传的文件,其中提供了一个完整的示例

要使用ServiceClient上载文件,可以使用.PostFile()方法:

与返回文件响应(作为附件或直接)类似,您只需:

多文件上传 您还可以使用所有.NET服务客户端中可用的
PostFilesWithRequest
API在单个HTTP请求中上载多个流。它支持使用查询字符串的任意组合填充请求DTO 和POST'edFormData以及多个文件上载数据流,例如:

using (var stream1 = uploadFile1.OpenRead())
using (var stream2 = uploadFile2.OpenRead())
{
    var client = new JsonServiceClient(baseUrl);
    var response = client.PostFilesWithRequest<MultipleFileUploadResponse>(
        "/multi-fileuploads?CustomerId=123",
        new MultipleFileUpload { CustomerName = "Foo,Bar" },
        new[] {
            new UploadFile("upload1.png", stream1),
            new UploadFile("upload2.png", stream2),
        });
}

非常感谢。我仍然有点不确定如何处理XML请求和我拥有的XML文件。我已经在我的问题中添加了更多的信息。一旦你以文件/流的形式获得了它,你就可以自由地使用它来做你想做的事情了?另外,最好先问一个更集中的问题,然后再将现有的问题扩展到一个不相关的路径。@mythz:With,
.PostFile()
还可以吗?是的
PostFile
仍在更改。警告:请注意,ServiceStack为客户端上载文件提供的这些内置方法,实际上,首先在内存中上载整个文件。如果您有小文件,这很好,但通常应该避免。(来源:第1053行:
var fileBytes=file.Stream.ReadFully();
foreach (var uploadedFile in base.RequestContext.Files)
{
    var newFilePath = Path.Combine(targetDir.FullName, uploadedFile.FileName);
    uploadedFile.SaveTo(newFilePath);
}
return new HttpResult(FileInfo, asAttachment:true);
using (var stream1 = uploadFile1.OpenRead())
using (var stream2 = uploadFile2.OpenRead())
{
    var client = new JsonServiceClient(baseUrl);
    var response = client.PostFilesWithRequest<MultipleFileUploadResponse>(
        "/multi-fileuploads?CustomerId=123",
        new MultipleFileUpload { CustomerName = "Foo,Bar" },
        new[] {
            new UploadFile("upload1.png", stream1),
            new UploadFile("upload2.png", stream2),
        });
}
using (var stream1 = uploadFile1.OpenRead())
using (var stream2 = uploadFile2.OpenRead())
{
    var client = new JsonHttpClient(baseUrl);
    var response = await client.PostFilesWithRequestAsync<MultipleFileUploadResponse>(
        new MultipleFileUpload { CustomerId = 123, CustomerName = "Foo,Bar" },
        new[] {
            new UploadFile("upload1.png", stream1),
            new UploadFile("upload2.png", stream2),
        });
}