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

あなたのWebサービスはasmxWebサービスのようですので、あなたがしようとしている方法でアップロードを行うことができるとは思えません。

送信するリクエストを送信するには、正しいSoapMessage形式を使用する必要があります。

C#/。Netを使用しているため、最も簡単な方法は、オブジェクトモデルを介してリクエストを送信できるようにするプロキシを作成するサービス参照を追加することです。

于 2013-01-31T12:35:04.717 に答える
0

ここでアプローチできるかどうかはわかりません。ファイルを文字列として既に読み取っているので、文字列の内容を、テキストファイルの内容を直接受け入れるWebメソッドに送信する必要があります。

だからあなたのサービスではあなたは(のようなもの)を持っているべきです:

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

次に、そのメソッドを呼び出し、txtFile変数をパラメーターとして渡します。

于 2013-01-31T12:36:19.287 に答える
0

この行のparm1は間違っています:

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

そしておそらく

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