1

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 クライアント モジュールを使用して接続し、新しいデータベースからデータを読み取ると、正常に動作し、すべてのプロジェクトを表示できます。

4

1 に答える 1