我正在构建一个WCF服务,该服务将部署到运行IIS的服务器上。我可以从当前解决方案添加服务引用并使用它。
如果我将服务部署到该特定计算机,我是否需要将该服务重新添加到使用该服务的应用程序中?
答案 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)
简而言之,请将客户端应用程序的配置文件中的服务地址更改为指向新服务器。
这将是部署过程的一部分。