Powershell Web服务方法定义更改

时间:2011-06-20 11:41:21

标签: web-services deployment powershell ssrs-2008

我使用PowerShell来部署我们的SSRS报告,但在部署多个报告时遇到了一个问题。

  

$ uri =“http:///Reportserver2008/reportservice2005.asmx”

     

$ Proxy = New-WebServiceProxy -Uri $ uri -Namespace SSRS.ReportingService2005 -UseDefaultCredential;

     

$ Proxy | gm“SetItemDataSources”

返回方法定义:

  

System.Void SetItemDataSources(string Item,SSRS.ReportingService2005.DataSource [] DataSources)

如果我复制上面的代码,方法定义会在第二次请求时更改 例如

  

$ uri =“http:///Reportserver2008/reportservice2005.asmx”

     

$ Proxy = New-WebServiceProxy -Uri $ uri -Namespace SSRS.ReportingService2005 -UseDefaultCredential;

     

$ Proxy | gm“SetItemDataSources”   $ Proxy = New-WebServiceProxy -Uri $ uri -Namespace SSRS.ReportingService2005 -UseDefaultCredential;

     

$ Proxy | gm“SetItemDataSources”

返回两个不同的方法定义:

  
      
  1. System.Void SetItemDataSources(string Item,SSRS.ReportingService2005.DataSource [] DataSources)
  2.   
  3. System.Void SetItemDataSources(string Item,SSRS.ReportingService2005.DataSource [],0juuvurk,Ve ...
  4.   

任何人都可以解释为什么定义会改变??? 我在第一次请求后尝试处理$ proxy,Uri没有改变

我想我可能需要拔出$ proxy并且只分配一次。 非常感谢任何见解!

1 个答案:

答案 0 :(得分:1)

你的直觉是正确的。创建Web服务的第2代或第3代理可能会带来麻烦,因为代理会被放入自动生成的名称空间中。因此代理两次实际上重做了很多工作,并在内存中创建了两个非常相似的外观类型。

通常有两种方法可以解决此类问题:

  • 使用-Namespace参数强制对象进入命名空间。
  • 使用$ proxy.GetType()。命名空间来查找自动生成的基本类型

希望这有帮助