部署C#项目并在安装时添加Web服务引用

时间:2011-04-28 18:44:01

标签: c# .net web-services windows-installer setup-deployment

我有一个要求,即应用程序将引用Web服务。每次安装新客户端时,我都需要通过在VSS中打开项目并重新添加引用来手动更新引用。

我是否可以在我的安装项目中添加引用,或者我可以通过C#中的代码添加/更新Web服务引用。

我没有创建设置或msi项目的经验。如果有人也可以给我一个很好的教程,那就太棒了!。

只是对服务的澄清没有改变,服务将托管在不同的mahcine,所以每次更改URI。

来自app config的

小部件: 我需要通过代码或安装项目来更新端点和servicePrincipalName吗?

  <endpoint address="net.tcp://rntn1099:8201/AX/Services/APVendInvoice"
  binding="netTcpBinding" bindingConfiguration="NetTcpBinding_VendVendInvoiceService"
contract="VendInvoiceService.VendVendInvoiceService"     name="NetTcpBinding_VendVendInvoiceService"><identity>  < servicePrincipalName value="host/RNTN1099.corp.xyz.com" />

2 个答案:

答案 0 :(得分:2)

我从来没有听说过这是一个实际的要求。我听过那些不知道你可以在运行时选择服务URL的人。

更新服务引用时,实际上是在更改客户端的代码。这至少意味着客户端的所有测试都应该在参考更新之后进行(以便您测试客户端使用的代码)。

使用“添加服务引用”时,在底部输入命名空间。这将与应用程序的默认命名空间相结合,成为创建多个类的命名空间。例如,如果您的默认命名空间是“MyWebApp”,并且在“添加服务引用”中使用“RemoteService”作为命名空间,则命名空间将为MyWebApp.RemoteService。您可以使用Visual Studio中的“View-&gt; Object browser”检查此命名空间的内容。

现在,如果服务名为“OrderService”,那么将会有一个名为OrderServiceClient的类。它有几个构造函数。其中一个构造函数接受配置名称和URL。另一个接受配置名称和EndPointAddress。你应该使用其中一个。

答案 1 :(得分:1)

这个要求听起来很奇怪。你为什么要更新参考?如果该服务会改变它的界面,那么您的客户端将不再起作用。所以我假设您的问题是,您想要在不同的URL下访问相同的服务?!如果是:您不必更新参考。您可以在不更新引用的情况下配置服务URl。