2011-04-28 2 views
1

응용 프로그램에서 웹 서비스를 참조하는 요구 사항이 있습니다. 새 클라이언트를 설치할 때마다 VSS에서 프로젝트를 열고 참조를 다시 추가하여 참조를 수동으로 업데이트해야합니다.C# 프로젝트 배포 및 설치시 웹 서비스 참조 추가

설치 프로젝트의 일부로 참조를 추가하거나 C#의 코드를 통해 웹 서비스 참조를 추가/업데이트 할 수 있습니까?

setup 또는 msi 프로젝트를 만든 경험이 없습니다. 누군가 나에게 좋은 지침서를 가르쳐 줄 수 있다면 그것은 훌륭 할 것입니다.

서비스에 대한 명확한 설명은 변경되지 않으며 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" /> 
+0

왜 참조를 업데이트 하시겠습니까? –

+0

심지어 참조를 수동으로 프로젝트를 업데이트 할 수 있다면 참조 URL을 업데이트하기 위해 고려해야하는 파일을 수동으로 업데이트 할 수 있습니다. 그것은 SOAP 서비스입니다. – Gainster

+0

다른 클라이언트에서 서비스가 호스팅되는 모든 클라이언트 당 – Gainster

답변

2

실제 요구 사항으로는 들어 본 적이 없습니다. 나는 당신이 런타임에 서비스의 URL을 선택할 수 있다는 것을 모르는 사람들로부터 그것을 들었다.

서비스 참조를 업데이트하면 실제로 클라이언트 코드가 변경됩니다. 이는 적어도 클라이언트의 모든 테스트가 참조 업데이트 후에 수행되어야한다는 것을 의미합니다 (클라이언트가 사용하는 코드를 테스트 할 수 있도록).

"서비스 참조 추가"를 사용할 때 아래쪽에 네임 스페이스를 입력하십시오. 이것은 응용 프로그램의 기본 네임 스페이스와 결합되어 여러 클래스가 생성되는 네임 스페이스가됩니다. 예를 들어 기본 네임 스페이스가 "MyWebApp"이고 "서비스 참조 추가"에서 네임 스페이스로 "RemoteService"를 사용하는 경우 네임 스페이스는 MyWebApp.RemoteService이됩니다. Visual Studio에서 "보기 -> 개체 브라우저"를 사용하여이 네임 스페이스의 내용을 검사 할 수 있습니다.

이제 서비스의 이름이 "OrderService"이면 OrderServiceClient라는 클래스가 생깁니다. 그것에는 몇 가지 생성자가 있습니다. 이러한 생성자 중 하나는 구성 이름과 URL을 모두 허용합니다. 다른 하나는 구성 이름과 EndPointAddress을 허용합니다. 이 중 하나를 사용해야합니다.

1

그 요구 사항은 이상하게 들립니다. 왜 참조를 업데이트해야합니까? 서비스가 인터페이스를 변경하면 클라이언트가 더 이상 작동하지 않습니다. 그래서 나는 당신의 문제가 다르다는 가정하에 같은 서비스에 접근하고 싶어한다고 가정한다. '예'인 경우 : 참조를 업데이트 할 필요가 없습니다. 참조를 업데이트하지 않고 서비스 UR1을 구성 할 수 있습니다.

+0

예 URI가 변경 될 때마다 서비스가 다른 서버에서 호스팅됩니다. – Gainster