PowershellスクリプトからWCFサービスを呼び出すという奇妙な動作を検出しました。Powershell 2.0のコマンド「New-WebServiceProxy」を使用すると、PSスクリプトからWebサービスにリクエストを送信できるようになります。しかし、サービス側のSystem.DateTimeオブジェクトでいくつか問題が発生しました。サーバー側の値は、常にDateTime.Minです。
そこで、小さなテストサービスのスクリプトを作成しました。このエラーを再現できます。VS2010の「標準」WCFプロジェクトを使用し、DateTimeプロパティを使用して「DataContract」クラスを拡張しました。
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello ";
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
[DataMember]
public DateTime Datum { get; set; }
}
サービスを呼び出すPowerShellスクリプト:
cls
$serv = New-WebServiceProxy -uri 'http://localhost:50176/TestService.svc?wsdl' - Namespace wt
$data = [wt.CompositeType](New-Object wt.CompositeType)
$data.StringValue = "abcd"
$data.BoolValue = $true
$data.Datum = Get-Date
$serv.GetDataUsingDataContract($data)
必要に応じて、zip形式のプロジェクトのドロップボックスリンクを送信できます。
よろしくUwe