【问题标题】:Upload text file to web service将文本文件上传到 Web 服务
【发布时间】:2013-01-31 12:31:58
【问题描述】:

我有以下接受文本文件的方法,我正在尝试将此文本文件上传到 Web 服务上。我使用用户名和密码。但我得到一个例外: “远程服务器返回错误:(404)未找到。”。如果我再次提供用户名和密码,我会得到同样的异常。我应该怎么做才能克服这个问题?

public static void UploadTextFileToWebService(string txtFile)
{
    WebClient webClient = new WebClient();
    string webAddress = null;
    try
    {
        webAddress = @"https://www.myweb.org/mywebwebservices/dataupload.asmx";
        webClient.Credentials = CredentialCache.DefaultCredentials;

        WebRequest serverRequest = WebRequest.Create(webAddress);
        WebResponse serverResponse;
        serverResponse = serverRequest.GetResponse();
        serverResponse.Close();              
        webClient.UploadFile(webAddress + txtFile, "PUT", txtFile);
        webClient.Dispose();
        webClient = null;
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

【问题讨论】:

  • 你能告诉我们网络服务吗?另外,不要使用ex.Message 作为诊断输出。使用ex.ToString()。

标签: c# .net asmx webclient webclient.uploaddata


【解决方案1】:

您的网络服务似乎是一个 asmx 网络服务,所以我怀疑您是否可以按照您尝试的方式进行上传。

您需要使用正确的 SoapMessage 格式来发送您发送的任何请求。

由于您使用的是 C#/.Net,因此最简单的方法是添加一个服务引用,该引用将创建一个代理以使您能够通过对象模型发送您的请求。

【讨论】:

  • 您能否分享一些相同的链接。谢谢
  • @user1399377 你可以试试看这个链接msdn.microsoft.com/en-us/library/bb628649.aspx
  • 对 ASMX 服务的服务引用不会赋予该服务上传文件的能力。
  • @JohnSaunders 假设他已将文件读入字符串(因为他说的是文本文件)并将其作为参数传递给 Web 服务的 WebMethod :)
  • 我不想假设,这就是我要求查看服务的原因。
【解决方案2】:

我不确定您是否在这里找到了方法 - 因为您已经将文件作为字符串读取,您应该将字符串的内容发送到直接接受文本文件内容的 web 方法.

所以在你的服务中你应该有(类似的):

[WebMethod()]
public void AcceptFile(string content)
{
    ...
}

然后调用该方法并将 txtFile 变量作为参数传递。

【讨论】:

    【解决方案3】:

    parm 1 在这一行是错误的:

    webClient.UploadFile(webAddress + txtFile, "PUT", txtFile);
    

    也许应该是

    webClient.UploadFile(webAddress + @"/" + txtFile, "PUT", txtFile);
    

    【讨论】:

      猜你喜欢
      • 2017-07-28
      • 1970-01-01
      • 2011-07-02
      • 2017-12-09
      • 2012-02-05
      • 2014-04-04
      • 2012-09-16
      • 2014-06-04
      • 1970-01-01
      相关资源
      最近更新 更多