何时添加服务引用?

时间:2010-10-14 19:58:28

标签: wcf iis service-reference

我正在构建一个WCF服务,该服务将部署到运行IIS的服务器上。我可以从当前解决方案添加服务引用并使用它。

如果我将服务部署到该特定计算机,我是否需要将该服务重新添加到使用该服务的应用程序中?

3 个答案:

答案 0 :(得分:3)

不,您只需要更改服务URL以匹配其他计算机。

添加服务引用时会生成代理,并且该代理将对托管这些服务的所有服务器起作用 - 它只需要正确的URL。

只有在公开的服务发生变化时才需要更新服务引用,例如:添加新方法或更改参数。

答案 1 :(得分:1)

没有。它的工作方式是,当您添加对项目的引用时,它会查询给定的服务URL,并通过SOAP通过XML创建特定服务的所有类和方法的列表。

这是一个.NET类。

如果您为服务添加了其他方法,则只需删除并读取参考文献。

E.g。报告服务2005 Web服务:

添加对项目的引用,然后导入命名空间。

Imports ReportingServiceInterface.ReportingService2005_WebService

您实例化此类的对象,并将其传递给URL。 然后通过此类的实例调用WebService方法。

见下文:

Public Shared Sub CreateDataSource(ByVal strPath As String, ByVal strDataSourceName As String, ByVal strConnectionString As String, ByVal strDescription As String, ByVal strUserName As String, ByVal strPassword As String)
            Dim rs As ReportingService2005 = New ReportingService2005

            rs.Credentials = ReportingServiceInterface.GetMyCredentials(strCredentialsURL)
            rs.Timeout = ReportingServiceInterface.iTimeout
            rs.Url = ReportingServiceInterface.strReportingServiceURL


            Dim dsdDefinition As DataSourceDefinition = New DataSourceDefinition
            dsdDefinition.CredentialRetrieval = CredentialRetrievalEnum.Store
            dsdDefinition.ConnectString = strConnectionString
            dsdDefinition.Enabled = True
            dsdDefinition.EnabledSpecified = True
            dsdDefinition.Extension = "SQL"
            dsdDefinition.ImpersonateUserSpecified = False
            dsdDefinition.UserName = strUserName ' "UserName"
            dsdDefinition.Password = strPassword ' "Password"
            dsdDefinition.Prompt = Nothing
            dsdDefinition.WindowsCredentials = False


            'Dim PropertyArray As ReportingService2005_WebService.Property() = New ReportingService2005_WebService.Property(0) {}
            'PropertyArray(0) = New ReportingService2005_WebService.Property
            'PropertyArray(0).Name = "Description"
            'PropertyArray(0).Value = "Automatically added DataSource"

            Dim PropertyArray() As ReportingService2005_WebService.Property = { _
                New ReportingService2005_WebService.Property() With {.Name = "Description", .Value = "Automatically added DataSource"} _
            }


            Try
                If String.IsNullOrEmpty(strDescription) Then
                    rs.CreateDataSource(strDataSourceName, strPath, False, dsdDefinition, Nothing)
                Else
                    PropertyArray(0).Value = strDescription
                    rs.CreateDataSource(strDataSourceName, strPath, False, dsdDefinition, PropertyArray)
                End If
            Catch ex As System.Web.Services.Protocols.SoapException
                Console.WriteLine(ex.Detail.InnerXml.ToString())
            End Try
        End Sub ' End Sub CreateDataSource

答案 2 :(得分:1)

简而言之,请将客户端应用程序的配置文件中的服务地址更改为指向新服务器。

这将是部署过程的一部分。