C# 将文本文件上载到web服务

C# 将文本文件上载到web服务,c#,.net,asmx,webclient,webclient.uploaddata,C#,.net,Asmx,Webclient,Webclient.uploaddata,我有下面的方法,它接受一个文本文件,我正试图将这个文本文件上传到web服务上。我使用用户名和密码。但我有一个例外: “远程服务器返回错误:(404)未找到。”。如果我再次提供用户名和密码,我会得到相同的异常。我应该如何克服这个问题 public static void UploadTextFileToWebService(string txtFile) { WebClient webClient = new WebClient(); string webAddress = nul

我有下面的方法,它接受一个文本文件,我正试图将这个文本文件上传到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);
    }
}

您的Web服务似乎是一个asmx Web服务,因此我怀疑您是否能够以您尝试的方式进行上传

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


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

您的Web服务似乎是一个asmx Web服务,因此我怀疑您是否能够以您尝试的方式进行上载

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


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

我不确定您是否掌握了方法-因为您已经将文件作为字符串读取,您应该只将字符串的内容发送给直接接受文本文件内容的webmethod

因此,在您的服务中,您应该有(类似于):


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

我不确定您在这里是否掌握了方法-因为您已经将文件作为字符串读取,所以应该将字符串的内容发送给直接接受文本文件内容的webmethod

因此,在您的服务中,您应该有(类似于):


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

parm 1在这一行中是错误的:

webClient.UploadFile(webAddress + txtFile, "PUT", txtFile);
也许应该是

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

parm 1在这一行中是错误的:

webClient.UploadFile(webAddress + txtFile, "PUT", txtFile);
也许应该是

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

你能给我们看一下网络服务吗?另外,不要将
ex.Message
用作诊断输出。使用
ex.ToString()
。您能给我们展示一下web服务吗?另外,不要将
ex.Message
用作诊断输出。使用
ex.ToString()
。您能分享一些相同的链接吗。Thanks@user1399377您可以尝试查看此链接。对ASMX服务的服务引用不会使该服务具有上载文件的功能。@johnsa理解的假设是,他已将文件读入字符串(因为他说的是文本文件),并将其作为参数传递给Webserivce的WebMethod:)我不愿意假设,这就是我要求查看该服务的原因。你能为同样的服务共享几个链接吗。Thanks@user1399377您可以尝试查看此链接。对ASMX服务的服务引用不会使该服务具有上载文件的功能。@johnsa理解的假设是,他已将文件读入字符串(因为他说的是文本文件),并将其作为参数传递给Webserivce的WebMethod:)我不愿意假设,这就是为什么我要求看服务。