2010-04-01 12 views
14

Wszystko,WCF Web Service nazwa zmiana WSDL i targetNamespace

Jestem trochę nowych do WCF nad IIS ale przed zrobić kilka ASMX usług internetowych. Moja usługa WCF jest uruchomiona, ale strona pomocnicza wygenerowana przez usługę sieci Web ma dla mnie domyślne nazwy, tj. Stronę zawierającą:

Utworzono usługę.

Aby przetestować tę usługę, należy utworzyć klienta i użyć go do wywołania usługi. Można to zrobić za pomocą narzędzia svcutil.exe z wiersza poleceń z następującą składnią:

svcutil.exe http://localhost:53456/ServicesHost.svc?wsdl

W standardowym miejscu ASMX chciałbym wykorzystać metodę/klasa atrybutów nadać nazwę Web Service i przestrzeń nazw. Po kliknięciu na link WSDL posiada:

<wsdl:definitions name="SearchServices" targetNamespace="http://tempuri.org/" 

to nie WCF Umowa serwisowa Imię i nazw z mojego Interface. Zakładam, że MEX używa jakichś domyślnych ustawień, ale chciałbym je zmienić na poprawne nazwy. Jak mogę to zrobić?

Odpowiedz

36

Dodaj to do swojej umowy o świadczenie usług

[ServiceContract(Namespace = "http://some.com/service/", Name = "ServiceName")] 

Dodaj to do implementacji usług

[ServiceBehavior(Namespace = "http://some.com/service/")] 

Dodaj to do Twojej web.config

<endpoint binding="basicHttpBinding" bindingNamespace="http://myservice.com".... 
+0

już mam: [ServiceContract ( name = "XXXXServices", Namespace = "http: // schematy/XXXX/2010/03")] public interface IPublicServices Nie robi żadnej różnicy, gdy jest Generuję plik WSDL ze strony wymienionej w moim oryginalnym wpisie. Powyższy interfejs jest implementowany przez klasę o nazwie SearchServices, stąd nazwa wygenerowana w definicji WSDL po kliknięciu linku http: // localhost: 53456/ServicesHost.svc? Wsdl – Graham

+0

tak, ale w jaki sposób uczynić tę przestrzeń dynamiczną . W przypadku WSDL potrzebujemy, aby Przestrzeń nazw (korzystam z adresu URL) zmieniała się w zależności od środowiska. Przykład MyCompany.api.stage i MyCompany.api.dev i tak dalej. Jeśli utworzysz definicję usługi na tych atrybutach, to ludzie, którzy testują plik wsdl za pośrednictwem protokołu SOAPUI, otrzymują błędy gniazda, ponieważ nie mogą komunikować się z właściwym adresem URL serwera – PositiveGuy

4

Właściwie należy umieścić na ServiceBehavior:

[ServiceBehavior(Namespace = "http://some.com/service/", Name = "ServiceName"] 

Następnie nazwa WSDL zostanie zmieniona.