1

我有以下接受文本文件的方法,我正在尝试将此文本文件上传到 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);
    }
}
4

3 回答 3

1

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

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

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

于 2013-01-31T12:35:04.717 回答
0

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

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

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

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

于 2013-01-31T12:36:19.287 回答
0

parm 1 在这一行是错误的:

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

可能应该是

webClient.UploadFile(webAddress + @"/" + txtFile, "PUT", txtFile);
于 2013-01-31T12:40:23.940 回答