IISを実行しているサーバーに展開されるWCFサービスを構築しています。現在のソリューションからサービス参照を追加して、問題なく使用できます。
その特定のマシンにサービスをデプロイする場合、それを使用するアプリケーションにサービスを再度追加する必要がありますか?
IISを実行しているサーバーに展開されるWCFサービスを構築しています。現在のソリューションからサービス参照を追加して、問題なく使用できます。
その特定のマシンにサービスをデプロイする場合、それを使用するアプリケーションにサービスを再度追加する必要がありますか?
いいえ、他のマシンと一致するようにサービスURLを変更する必要があります。
サービス参照を追加するとプロキシが生成され、そのプロキシはそれらのサービスをホストするすべてのサーバーに対して機能します。必要なのは正しいURLだけです。
新しいメソッドの追加やパラメーターの変更など、公開されたサービスが変更された場合にのみ、サービス参照を更新する必要があります。
いいえ。プロジェクトへの参照を追加すると、指定されたサービスURLを照会し、SOAPを介してXMLを介して、特定のサービスのすべてのクラスとメソッドのリストを作成します。
これは.NETクラスです。
サービスにメソッドを追加した場合にのみ、参照を削除して読み取る必要があります。
例:レポートサービス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
簡単に言うと、クライアントアプリケーションの構成ファイルのサービスアドレスを変更して、新しいサーバーを指すようにします。
これは、展開手順の一部になります。