Кілька нубських питань по WCF.

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Оскільки в темі WCF я новачок, то був би дуже вдячний, якби хтось поміг з наступними простими питаннями.

Прошу в гугл, мсдн чи тим більше кудась інакше не посилати. Уже там був:) (маю на увазі гугл і мсдн)

1. От не зрозуміло із секцією


<host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/SampleService" />
          </baseAddresses>
        </host>

Ніби і контекст простий як двері ... але щось ...

От де ось той baseAddress потім використовується ? Де випливає ? При дебазі як було http://localhost:8080/Service1.svc так і залишилося

wsdl як брався по адресу http://localhost:8080/Service1.svc?wsdl так і береться, при Publish отой http://localhost:8080/SampleService теж нігде не вилазить ...

Так на що впливає тег baseAddress і його значення ??

2.При певних налаштуваннях wcf-служби при генерації проксі класа на клієнті появляється такий кусок конфігурації

<identity>
    <certificate encodedValue="IyMIIBmwIBATANBgkqhkiG9w0BAQQFADBkMQswCQYDVQQGEwJSVTEPMA0GA1UECBMGUnVzc2lhMQ ....." />
</identity>

Оте значення записане в форматі Base64. Хотілось би прочитати його, побачити, що там «зашифоровано»

Робив так


 byte[] bytes = Convert.FromBase64String(base64string);
string ReturnString = UnicodeEncoding.Unicode.GetString(bytes)
а також
a)string ReturnString = UnicodeEncoding.UTF32.GetString(bytes) ,
b)string ReturnString = UnicodeEncoding.UTF8.GetString(bytes)
c)string ReturnString = ASCIIEncoding.ASCII.GetString(bytes)

... і ще не менше десятка варіантів «розшифровки» отого тексту, але зажди ReturnText виходила якась абракадабра...

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

А зачем тебе?

по-перше цікаво і я не люблю, коли я щось не розумію. По-друге скоро пригодиться на роботі.

2 arm
От створив я Hello World WCF-сервіс, тобто сервіс який генерує Visual Studio сама автоматично.
Поставив цей сервіс на локfльний IIS.

Ось кусок файлу конфігурації.


<host>
          <baseAddresses>
            <add baseAddress="http://localhost:988/SomeValue"/>
          </baseAddresses>
 </host>
...
 <endpoint address="Service1.svc" binding="wsHttpBinding" contract="SimpleService.IService1" bindingConfiguration="MainBinding"></endpoint>

От що мені треба зробити, щоб побачити наочно ось те SomeValue?!
В браузерному рядку нема, в проксі класі клієнта також не фігурує те значення, нігде нема!:)
Пробую http://localhost: 988/SomeValue/Service1.svc, що логічно видає Not Found!

Де я туплю?


«Основы WCF Резник», є трохи описано використання сертифікатів

уже знайшов місце, де про це написано. Пише, що «елемент містить сигнатуру слжуби для якої він генерувався. Під час виконання звіряється з тією, до якої кенектимся.»

А то що ти пробує брєд рідкісний

ну я ж писав, що нубських питань. А взагалі мені оте значення нагадало ViewState в ASP.Net і я подумав, що його по аналогії можна «розшифрувати». Ну, мабуть, тут не аналогічно...


це типу такий метод навчання методом «тику»?)

ні, це метод навчання З використанням методом тику!

1. baseAddress — он как бы и так говорит, что он базовый (в данном случае для всех конечных точек контракта). Т.е. можно указать такой базовый адрес, а потом в каждой конечной точке не указывать адрес (address=""). В таком случае все endpoint’ы будут доступны по одному адресу, но по разным протоколам. А можно указать доп. адрес для конечной точки, тогда она будет доступна по адресу base/endpoint_addr.
Т.е.:
< service name= “ISecurityService”...>
< host>< baseAddresses>< add baseAddress="http://localhost: 8010/SecurityDataService.svc"/></baseAddresses></host>
< endpoint address="".../>
</service>
>>>> endpoint address’s = http://localhost: 8010/SecurityDataService.svc
< service name= “ISecurityService”...>
< host>< baseAddresses>< add baseAddress="http://localhost: 8010/SecurityDataService.svc“/></baseAddresses></host>
< endpoint address= “custom.svc”.../>
</service>
>>>> endpoint address’s = http://localhost: 8010/SecurityDataService.svc/custom.svc
По-поводу того, что виздл все равно берется с http://localhost: 8080/Service1.svc? wsdl, то это значит, что ты указал для endpoint’а абсолютный такой адрес.

2. ты включил секьюрити на основе сертификатов. расшифровывать нет смысла.

От де ось той baseAddress потім використовується? Де випливає?

Можно розгортати точки доступу відносно до базового адресу. В твоєму випадку як я розумію точка доступу є абсолютною.

... і ще не менше десятка варіантів «розшифровки» отого тексту, але зажди ReturnText виходила якась абракадабра...

«Основы WCF Резник», є трохи описано використання сертифікатів. А то що ти пробує брєд рідкісний, це типу такий метод навчання методом «тику»?)

Підписатись на коментарі