我想在 P6 Web 服务中使用基于 Cookie 的身份验证,我遵循以下两个链接
- http://docs.oracle.com/cd/E16281_01/Technical_Documentation/Web_Services/ProgrammersGuide/Logging_into_Primavera_Web_Services.htm#dotnetexample
- http://docs.oracle.com/cd/E16281_01/Technical_Documentation/Web_Services/ProgrammersGuide/whnjs.htm
现在我可以使用基于 cookie 的身份验证登录,但是当我尝试继续下一步时,我感到震惊。
例如。我想在 P6 DB 中创建一个新活动,我按照以下步骤操作。
登录系统(创建 Cookie 容器):我为 AuthenticationService.wsdl 添加了服务参考
System.Net.CookieContainer cookieContainer; public void Login(String userName, String password) { AuthenticationServiceWebRef.AuthenticationService authService = new AuthenticationServiceWebRef.AuthenticationService(); authService.CookieContainer = new System.Net.CookieContainer(); authService.Url = ConfigurationManager.AppSettings["WSAuthenticationService"]; AuthenticationServiceWebRef.Login loginObj = new AuthenticationServiceWebRef.Login(); loginObj.UserName = userName; loginObj.Password = password; loginObj.DatabaseInstanceId = 1; loginObj.DatabaseInstanceIdSpecified = true; AuthenticationServiceWebRef.LoginResponse loginReturn = authService.Login(loginObj); cookieContainer = authService.CookieContainer; }
创建活动:我为 ActivityService?wsdl 添加服务引用
Login(WSUsername, WSPassword); ActivityPortBinding apb = new ActivityPortBinding(); apb.CookieContainer = cookieContainer; apb.Url = ConfigurationManager.AppSettings["WSGetDataByID"]; Activity[] acts; acts = new Activity[1]; Activity activity = null; for (int i = 0; i < 1; i++) { activity = new Activity(); activity.ProjectObjectId = iProjectObjectID; activity.ProjectObjectIdSpecified = true; activity.Id = "P6 Test" + (i + 1); activity.Name = "P6 Test" + (i + 1); acts[i] = activity; } int [] arrayObjectIDs= apb.CreateActivities(acts); iRetActivityObjectID = arrayObjectIDs[0];
问题出现在第二步,我无法创建 ActivityPortBinding 类。
错误:找不到类型或命名空间名称“ActivityPortBinding”(您是否缺少 using 指令或程序集引用?)
- 你能帮我找出我在上面的代码中出错的地方吗?
- 我在步骤 1 中调用了正确的 Login() 吗?
- 我应该在 Step2 中使用哪个参考 ActivityPortBinding 类?
提前致谢!