1

私は次のことをしようとしています:

$basicHttpBinding = New-Object System.ServiceModel.BasicHttpBinding([System.ServiceModel.BasicHttpSecurityMode]::TransportCredentialOnly);
$basicHttpBinding.Security.Transport.ClientCredentialType = [System.ServiceModel.HttpClientCredentialType]::Windows;
$basicHttpBinding.MaxBufferSize = 65536000;
$basicHttpBinding.MaxReceivedMessageSize = 65536000;
$basicHttpBinding.MaxBufferPoolSize = 524288;
$basicHttpBinding.CloseTimeout = "01:01:00";
$basicHttpBinding.OpenTimeout = "01:01:00";
$basicHttpBinding.ReceiveTimeout = "01:01:00";
$basicHttpBinding.SendTimeout = "01:01:00";
$mexClient = New-Object System.ServiceModel.Description.MetadataExchangeClient($basicHttpBinding);
$mexClient.MaximumResolvedReferences = [System.Int32]::MaxValue
$metadataSet = $mexClient.GetMetadata([Uri]$WsdlUrl, $mode)

何らかの理由で、MexClient が資格情報を渡していないようです。これは、スクリプトと同じユーザーとして実行されている IE で $WsdlUrl を参照すると、wsdl が正常に表示されるためです。上記のコードを実行すると、例外が発生します。

"2" 個の引数を指定して "GetMetadata" を呼び出し中に例外が発生しました: "メタデータには、解決できない参照が含まれています: 'http_://myServer:myPort/myVirtualDirectory/myWcfService.svc?wsdl'." ---> System.InvalidOperationException: メタデータに解決できない参照が含まれています: 'http_://myServer:myPort/myVirtualDirectory/myWcfService.svc?wsdl'. ---> System.Net.WebException: リモート サーバーがエラーを返しました: (401) Unauthorized.


編集 01

また、MetadataExchangeClient が http 経由でリクエストを送信していないようです。フィドラーを使用すると、「リクエスト」が送信されず、失敗の HTTP 応答のみが送信されます。MexClient を http 経由で送受信するにはどうすればよいですか?

4

1 に答える 1