我有以下接受文本文件的方法,我试图在Web服务上传这个文本文件。我使用用户名和密码。但我得到一个例外: “远程服务器返回错误:(404)Not Found。”如果我再次提供用户名和密码,我会得到相同的例外。我该怎么做才能克服这个问题?
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);
}
}
答案 0 :(得分:1)
您的网络服务似乎是一个asmx网络服务,所以我怀疑您可以按照您的方式进行上传。
您需要使用正确的SoapMessage格式发送您要发送的任何请求。
由于您使用的是C#/。Net,最简单的方法是添加一个服务引用,该引用将创建一个代理,以便您通过对象模型发送请求。
答案 1 :(得分:0)
我不确定你是否已经在这里采用了这种方法 - 因为你已经将文件作为字符串读取,你应该将字符串的内容发送到一个直接接受文本文件内容的web方法。
所以在你的服务中你应该有(像这样):
[WebMethod()]
public void AcceptFile(string content)
{
...
}
然后调用该方法并将txtFile变量作为参数传递。
答案 2 :(得分:0)
parm 1在这一行中是错误的:
webClient.UploadFile(webAddress + txtFile, "PUT", txtFile);
可能应该是
webClient.UploadFile(webAddress + @"/" + txtFile, "PUT", txtFile);