入力中に残念な回答が見つかりました
プロキシ経由でユーザー名/パスワード認証を必要とする外部 Web サービスに接続しようとしています。Visual Studio Express 2008 を使用してサービス参照を生成しています
- Web 参照を使用して同じ Web サービスに接続しました。完了するまでに時間がかかるため、タイムアウトを大きく設定するだけで済みました。
- 生成されたサービス参照とプロキシ経由で取得するための設定を使用して、ユーザー名/パスワード認証を必要としない別の Web サービスに接続しました。
したがって、私の考えでは、この参照を取得し、正しい Web サービスを指し示し、認証を追加します。
セキュリティなしで使用している構成:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy bypassonlocal="False" proxyaddress="http://***.***.****:80" />
</defaultProxy>
</system.net>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="AreaWebServiceSoap12">
<textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
messageVersion="Soap12" writeEncoding="utf-8">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</textMessageEncoding>
<httpTransport manualAddressing="false" maxBufferPoolSize="524288"
maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://www.****.*****.****.com/samplewebservice/service.asmx"
binding="customBinding" bindingConfiguration="AreaWebServiceSoap12"
contract="ServiceReference1.ServiceSoap" name="ServiceSoap" />
</client>
</system.serviceModel>
</configuration>
認証の呼び出しに次のコードを追加しました。
static void Main(string[] args)
{
ServiceSoapClient s = new ServiceSoapClient();
s.ClientCredentials.UserName.UserName = @"username";
s.ClientCredentials.UserName.Password = @"password";
Service.RawGpsData[] result = s.GetRawGpsData(0);
Console.WriteLine(String.Format("done:{0}",result.Length));
Console.ReadLine();
}
このセットアップを使用するだけで、予想どおりエラーが発生します。
HTTP 要求は、クライアント認証スキーム Anonymous では許可されていません。サーバーから受信した認証ヘッダーは NTLM です。
WCFを使い始めたばかりなので、道に迷ってばかげたことを試し始めました。
次のセクションを設定に追加すると
<security authenticationMode="UserNameOverTransport"></security>
次のエラーが表示されます。
コントラクト AreaWebServiceSoap.AreaWebServices のバインディング CustomBinding.http://tempuri.org/ は、整合性と機密性を備えたトランスポート レベルが必要な検証モードで構成されます。トランスポートは完全性と機密性を提供できません。
申し訳ありませんが、この質問を入力しているときに、自分で答えを見つけました。私はまだ人々がこれに興味を持っていると思います.すべてのコメントや考えはまだ歓迎されています. だから私はここに質問を残してコミュニティにし、自分で答えを投稿します。