powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / localhost в WSDL
2 сообщений из 2, страница 1 из 1
localhost в WSDL
    #36808608
Krakozabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Пишу сейчас приложение для авто-хостинга WCF сервисов.
Подцепляю некий тестовый сервис:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Uri addr = new Uri("http://localhost:8081/TestService");
try
{
    ServiceHost host = new ServiceHost(typeof(TestService), addr);

    host.AddServiceEndpoint(typeof(ITestService), new WSHttpBinding(), addr);

    ServiceMetadataBehavior mdb = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
    if (mdb == null)
    {
        mdb = new ServiceMetadataBehavior();
        mdb.HttpGetEnabled = true;

        host.Description.Behaviors.Add(mdb);
    }
    host.AddServiceEndpoint(typeof(IMetadataExchange), new BasicHttpBinding(), "mex");

    service.ConnectionString = con;
    host.Open();
    aL.Add(host);
}
catch(Exception ex)
{
    System.Windows.Forms.MessageBox.Show(ex.Message);
}

Всё прекрасно работает на локальной машине, однако, как только я перношу приложение на сервер, вроде и wsdl получаю, однако подцепить из студии не получается.
Стал разбираться почему, и обнаружил, что wsdl с localhost

Код: plaintext
1.
 <soap12:address location="http://localhost:8081/TestService" /> 

мне же нужно, чтобы он формировался для конкретного адреса

Я попробовал делать привязку так:

Код: plaintext
1.
2.
3.
//У сервера  2  IP и отвечать он должен на запросы из обоих сетей
host.AddServiceEndpoint(typeof(ITestService), new WSHttpBinding(), "http://10.240..71:8081/TestService");
host.AddServiceEndpoint(typeof(ITestService), new WSHttpBinding(), "http://10.200..129:8081/TestService");

Однако выдаётся ошибка, о том, что невозможно открыть 2 привязки по одинаковому протоколу на одном аддрессе. ((


Вот в связи с этим у меня вопрос - как сделать так, чтобы wsdl генерировался с ip-адресом - причём с тем адресом из той сети, с которой обращается клиент (как это делается при хостинге сервиса в IIS)?
...
Рейтинг: 0 / 0
localhost в WSDL
    #36812109
Krakozabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну чтоже — гуру, видимо бухают — пришлось искать самому.
Итак по результатам поиска оказалось, что дело не в
Код: plaintext
1.
<soap12:address location="http://localhost:8081/TestService" />
а в присутствии localhost-а в <wsdl:types>
Дело в том, что WCF хранит описание типов на сервере а не пихает его в WSDL, и так получилось, что такая схема мне не подходит.
Статья о том, как это обойти вот:
http://weblogs.thinktecture.com/cweyer/2007/05/improving-wcf-interoperability-flattening-your-wsdl.html
Для ленивых и не любящих читать много букаф — в конце можно скачать пример.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / localhost в WSDL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]