【问题标题】:PSI WCF New-WebServiceProxyPSI WCF New-WebServiceProxy
【发布时间】:2014-01-23 16:04:07
【问题描述】:

动机:

正如我们在Project Server Architecture中看到的那样

PSI 中用于 Web 服务的基于 SOAP 的 ASMX 接口在 Project Server 2013 中仍然可用,但已弃用。

原样

我有一些 PowerShell 客户端 sn-ps 用于与 Project Server 交互。与服务器通信的标准方式是 PSI ASMX Web 服务。

未来

我想将 sn-ps 重构为使用 PSI WCF Web 服务的标准。

结果

例如下面的简单代码可以正常工作:

$Passwd = Get-Content $home\Documents\Password.txt | ConvertTo-SecureString
$Credential = New-Object -typename System.Management.Automation.PsCredential -argumentlist "user_name",$Passwd
$PWAUrl = "http://project_server_name/PWA"
$ProjSvcURL = $PWAUrl + "/_vti_bin/PSI/Project.asmx?wsdl"
$ProjSvcProxy = New-WebServiceProxy -uri $ProjSvcURL -credential $Credential
$projDataSet = $ProjSvcProxy.ReadProjectList()
$projDataSet.Tables[0].Rows.Count

但简单的转换:

$Passwd = Get-Content $home\Documents\Password.txt | ConvertTo-SecureString
$Credential = New-Object -typename System.Management.Automation.PsCredential -argumentlist "user_name",$Passwd
$PWAUrl = "http://project_server_name/PWA"
$ProjSvcURL = $PWAUrl + "/_vti_bin/PSI/ProjectServer.svc"
...

消息失败:

New-WebServiceProxy : 请求失败,HTTP 状态 400: Bad Request。

这是 IIS 日志摘录:

2014-01-05 13:50:41 10.15.43.7 GET /PWA/_vti_bin/PSI/ProjectServer.svc - 80 - XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 401 1 2148074254 125

2014-01-05 13:50:41 10.15.43.7 GET /PWA/_vti_bin/PSI/ProjectServer.svc - 80 - XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 401 2 5 328

2014-01-05 13:50:41 10.15.43.7 GET /_vti_bin/PSI/ProjectServer.svc/ntlm - 80 用户名 XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 400 0 0 140

2014-01-05 17:58:33 10.15.43.7 GET /PWA/_vti_bin/PSI/ProjectServer.svc - 80 - XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 401 2 5 312

2014-01-05 17:58:33 10.15.43.7 GET /PWA/_vti_bin/PSI/ProjectServer.svc - 80 - XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 401 1 2148074254 156

2014-01-05 17:58:33 10.15.43.7 GET /_vti_bin/PSI/ProjectServer.svc/ntlm - 80 用户名 XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 400 0 0 109

有趣的是,我找不到任何将 WCF PSI 与 PowerShell 结合使用的示例。 有没有人尝试过这样做? 有人成功吗? 任何人都可以发布任何sn-p吗?

【问题讨论】:

  • Bad Request 是来自您的 Web 服务器的响应。它的日志对此有何评论?
  • 我没有看到与此消息对应的 IIS 事件日志记录。是否有任何其他事件日志可以包含预期事件?
  • IIS 通常记录到文件,而不是事件日志。检查网站配置。
  • 添加在上面。有用吗?

标签: wcf web-services powershell psi


【解决方案1】:

我刚刚遇到了和你一样的问题。使用 asmx 并希望将它们移植到 WCF 服务挂件的 Project Server 脚本。

经过一番挖掘,我发现了以下 MSDN 站点: http://msdn.microsoft.com/en-us/library/office/ms488627(v=office.15).aspx#pj15_PSIRefOverview_PSI

您看到了这张图片,为整个 WCF SVC 事物提供了一些启示:它们就在那里,只是不是您期望它们在的地方......

https://app.box.com/s/tsi7150bgra3rpg4n6yu

我尝试调用服务 - 它就像一个魅力。

希望对你也有帮助!

附:为盒子链接道歉......还没有足够的声誉来发布图片;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2021-02-11
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    相关资源
    最近更新 更多