问题描述
我想在 P6 网络服务中使用基于 Cookie 的身份验证,我遵循以下两个链接
I want to use Cookie based authentication in P6 web service and I followed below two links
- 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 的身份验证登录,但是当我尝试进行下一步时,我感到震惊.
Now I am able to Login with cookie based authentication but when I tries to proceed the next step I am strucked.
例如.我想在 P6 DB 中创建一个新活动,我按照以下步骤操作.
For eg. I want to create a new activity in P6 DB, I followed the below steps.
登录系统(创建 Cookie 容器):我为 AuthenticationService.wsdl 添加了服务引用
Login to system (create a Cookie Container) : I added service reference for 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 添加服务引用
Create the Activity : I add service reference for 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 类.
The issue is coming in second step, I am not able to create ActivityPortBinding class.
错误:找不到类型或命名空间名称ActivityPortBinding"(您是否缺少 using 指令或程序集引用?)
Error : The type or namespace name 'ActivityPortBinding' could not be found (are you missing a using directive or an assembly reference?)
- 你能帮我找出我在上面代码中出错的地方吗?
- 我在步骤 1 中调用了正确的 Login() 吗?
- 我应该对 Step2 中的 ActivityPortBinding 类使用哪个参考?
提前致谢!
推荐答案
act1.ReadActivities(act)
这行代码给出空值或数组长度为零.已经有数据加载 P6.P6端是否需要设置
This line of code is giving null or array length zero. There is already data loaded P6.Whether there is any setting to be done on P6 side
这篇关于如何使用C#通过P6 Web服务在P6DB中读写数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!