.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();
}
(上記のコメントを参照してください。これらは私が試した呼び出しです。資格情報を指定する方法を見逃していませんか?)
ありがとう、トム