winform アプリケーション (c#) で primavera データベース (sqlserver 2008R2) からデータを読み取るために、primavera webservices (バージョン 6.2.1) を使用しています。http cookie コンテナー認証モードを使用します。データベースを新しいサーバーに移動する前は、primavera データベースに正常にログインしてデータを読み取ることができましたが、DB を移動すると (バックアップと復元を使用して)、引き続き db にログインできますが、primavera Web サービスはすべての要求に対して null を返します。
これはログインするための私のコードです:
AuthenticationService authService = new AuthenticationService( );
authService.CookieContainer = new System.Net.CookieContainer( );
authService.Url = _P6wsAuthenticationService;
Login loginObj = new Login( );
loginObj.UserName = pv_Username;
loginObj.Password = pv_Password;
loginObj.DatabaseInstanceId = 1;
loginObj.DatabaseInstanceIdSpecified = true;
loginObj.VerboseFaults = true;
loginObj.VerboseFaultsSpecified = true;
LoginResponse loginReturn = authService.Login( loginObj );
ReadDatabaseInstancesResponseDatabaseInstance[] readdbInstances = authService.ReadDatabaseInstances("");
cookieContainer = authService.CookieContainer;
このコードを実行すると、新しいデータベースの loginresponse は「true」になり、「readdbInstances」に正しいデータベース インスタンス情報が表示されます。
次のコードを実行して、DB からプロジェクト情報を読み取ります。
ProjectPortBinding pbProject = new ProjectPortBinding( );
pbProject.CookieContainer = cookieContainer;
pbProject.Url = _P6wsProjectService;
ReadProjects readProject = new ReadProjects( );
Primavera.Ws.P6.Project.ProjectFieldType[] pfProject = new Primavera.Ws.P6.Project.ProjectFieldType[6];
pfProject[0] = Primavera.Ws.P6.Project.ProjectFieldType.ObjectId;
pfProject[1] = Primavera.Ws.P6.Project.ProjectFieldType.Id;
pfProject[2] = Primavera.Ws.P6.Project.ProjectFieldType.Name;
pfProject[3] = Primavera.Ws.P6.Project.ProjectFieldType.Status;
pfProject[4] = Primavera.Ws.P6.Project.ProjectFieldType.StartDate;
pfProject[5] = Primavera.Ws.P6.Project.ProjectFieldType.FinishDate;
readProject.Filter = pv_ProjectList.Equals( String.Empty ) ? String.Empty : "Id IN (" + pv_ProjectList + ")";
readProject.Field = pfProject;
Primavera.Ws.P6.Project.Project[] aProject = pbProject.ReadProjects( readProject );
リクエストをサーバーに送信しますが、受信したメッセージにはプロジェクトが含まれていません。
データベースを移動する前は、同じコードでデータを読み取ることができました。データベース構成を使用して primavera Web サービスのデータベース インスタンスを変更しましたが、適切な DB に接続していることは確かですが、データベースからデータを読み取れない理由がわかりません。primavera クライアント モジュールを使用して接続し、新しいデータベースからデータを読み取ると、正常に動作し、すべてのプロジェクトを表示できます。