C# 使用web服务发送zip文件

C# 使用web服务发送zip文件,c#,file-upload,multipartform-data,webservice-client,C#,File Upload,Multipartform Data,Webservice Client,我已经使用.NETWebAPI创建了一个web服务。web服务部分工作得很好,我能够使用高级REST客户端发送zip文件。问题是我无法以编程方式发送zip文件。以下是高级REST客户端请求头: 我尝试过一些事情,但没有成功。考虑到这是web开发人员的基本工作(我是桌面开发人员),我不会发布我尝试过的内容,但如果有必要,我会发布。先谢谢你 编辑:这是我的最新版本 private async void BeginUpdate(bool webserverStatus) { if (!web

我已经使用.NETWebAPI创建了一个web服务。web服务部分工作得很好,我能够使用高级REST客户端发送zip文件。问题是我无法以编程方式发送zip文件。以下是高级REST客户端请求头:

我尝试过一些事情,但没有成功。考虑到这是web开发人员的基本工作(我是桌面开发人员),我不会发布我尝试过的内容,但如果有必要,我会发布。先谢谢你

编辑:这是我的最新版本

private async void BeginUpdate(bool webserverStatus)
{
    if (!webserverStatus) return;

    var httpClient = new HttpClient();
    var form = new MultipartFormDataContent();
    var byteArray = File.ReadAllBytes("myUpdatePackage.zip");

    form.Add(new ByteArrayContent(byteArray, 0, byteArray.Length), "myUpdatePackage", "myUpdatePackage.zip");
    HttpResponseMessage response = await httpClient.PostAsync(@"http://localhost:9000/api/file/", form);
    response.EnsureSuccessStatusCode();
    httpClient.Dispose();

    string sd = response.Content.ReadAsStringAsync().Result;
}

我意识到,在高级REST客户机上,我使用PUT,而在我的C#应用程序上,我称之为POST

HttpResponseMessage response = await httpClient.PostAsync(@"http://localhost:9000/api/file/", form);
下面是完整的代码:

private async void BeginUpdate(bool webserverStatus)
{
    if (!webserverStatus) return;

    var byteArray  = File.ReadAllBytes("myUpdatePackage.zip");
    var httpClient = new HttpClient();
    var form       = new MultipartFormDataContent();

    form.Add(new ByteArrayContent(byteArray, 0, byteArray.Length), "myUpdatePackage", "myUpdatePackage.zip");
    HttpResponseMessage response = await httpClient.PutAsync(@"http://localhost:9000/api/file/", form);

    response.EnsureSuccessStatusCode();
    httpClient.Dispose();
    string sd = response.Content.ReadAsStringAsync().Result;
}

关于

的更多详细信息是的,您的代码是必要的,即使它听起来像基本的东西。使用像wireshark或fiddler这样的嗅探器。将高级REST客户端结果与应用程序结果进行比较。看看http头。通常,您必须在代码中添加缺少的标题。
webserverStatus
不是一个很好的名称,因为我真的不知道它是什么。您应该将其命名为
webServerIsActive
webserverExists
,不管是什么情况。是的,您是对的,webserverStatus对我来说只是一个帮助变量。