0

.NET 2.0 SOAP Web サービス (C# で記述) 内から HTTP Web 要求を作成したいと考えています。[WebMethod]これは Web サービスで再利用する必要がある既存の PHP スクリプトであるため、呼び出しを として認識できません。

SOAP Web サービスは IIS で実行され、仮想ディレクトリは NTLM 認証で保護されます。Web サービスは正常に動作しています。web.config に次の行があります。

<authentication mode="Windows" />

Web メソッド内で、convertString という関数を呼び出したいと思います。これは、文字列を変換する PHP スクリプトを呼び出します。PHPスクリプトのさまざまな場所を試しました:

  • 元のディレクトリ (NTLM 認証で保護)
  • Web サービス仮想ディレクトリ内
  • 匿名アクセスのディレクトリ

3 つのケースすべてで、HTTP エラー 401 - Unauthorized が発生します。ユーザー名、パスワード、およびドメインを明示的に指定した場合にのみ機能します。しかし、私はそれを本当に避けたいです。なぜこれが起こるのか、誰にも分かりますか?

関数のコードは次のとおりです。

public string convertString(string raw)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://server/directory/convtext.php?string=" + raw);
    request.Credentials = new NetworkCredential(user, pass, domain);  // This works! But I would like to avoid this line...
    // request.UseDefaultCredentials = true; // This does not work
    // request.Credentials = CredentialCache.DefaultCredentials; // This does not work
    // request.Credentials = CredentialCache.DefaultNetworkCredentials; // This does not work
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    StreamReader input = new StreamReader(response.GetResponseStream());
    return input.ReadToEnd();
}

(上記のコメントを参照してください。これらは私が試した呼び出しです。資格情報を指定する方法を見逃していませんか?)

ありがとう、トム

4

2 に答える 2