Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

​WCF - как хостить на IIS?

307  
Murr патриот08.08.18 13:40
Murr
08.08.18 13:40 

WCF - как хостить на IIS?


Есть сервисе и есть клиент. Все отлажено и в отладочном режиме работает.


Отладка, однако, делалась на базе WcfTestClient.exe и IIS Express (того, который автоматически прописывается для сервиса)


Вопросик - Как перекинуть сервисе на обычный IIS.


Веб-сайт создается без проблем.

Сервисе, как приложение, включается в веб-сайт тоже без особых проблем.

Дальше - начинаются непонятности - сервисе остается невидимым.

Т.е. код в папке виден, БИН-фолдер там тоже есть, папки ДЕБУГ & РЕЛЕАСЕ - пустые - дллка и конфиг лежат прямо в БИН.


Копировал построенные дллку и конфиг в корневой БИН сайта - без результата.


Перепроверил и скорректировал все ссылки на функциональность сервиса - они - корректные, актуальные.

Под отладкой - все работает как должно. Под IIS- не видит сервиса.


Ах, да... если добавить обычный веб-сервисе (асмх) - он видим - т.е. все пути правильные

и все должно работать.


Когда-то давно что-то подобное побеждал, но не помню как делал.

По идее - должно быть что-то в конфиге корневой папки или в глобал.асах...


Ткните, плс, носом где прочитат' куда чего дописать...

#1 
Срыв покровов коренной житель09.08.18 08:40
NEW 09.08.18 08:40 
в ответ Murr 08.08.18 13:40
Murr патриот09.08.18 10:03
Murr
NEW 09.08.18 10:03 
в ответ Срыв покровов 09.08.18 08:40

Ссылка - замечательная...

Только вот одна проблемка - не работает как описано... смущ

#3 
Murr патриот09.08.18 10:15
Murr
NEW 09.08.18 10:15 
в ответ Murr 08.08.18 13:40

Пока остановился на следующем.


1. создается обычный сайт на ИИС. Можно - просто приложение в студии.

2. отдельно создается проект для сервиса. Физическая папка мапится к сайту как виртуальная директория.

3. в сервисе надо сделать несколько вещей:

3.1 прописать .СВЦ для каждого доступного сервиса

3.2. в имплементации сервиса прописать атрибут:

[System.ServiceModel.Activation.AspNetCompatibilityRequirements(
RequirementsMode = System.ServiceModel.Activation.AspNetCompatibilityRequirementsMode.Allowed)]

3.3. в веб.конфиге прописать

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" ... />

обычные описания доступных сервисов должны быть на месте.

После этого сервисы будут видимы и можно будет отлаживаться в обычном порядке.

#4 
Murr патриот09.08.18 12:42
Murr
NEW 09.08.18 12:42 
в ответ Murr 09.08.18 10:15

Еще небольший моментик к сервисам...


Есть у билли в документации упоминание об способе адресации к корневому каталогу сайта.

Т.е. говорится, что если где-то используется :

string RootDir = "~";
string fullpath = System.Web.Hosting.HostingEnvironment.MapPath(RootDir);

то fullpath будет содержать полный путь к корню сайта на физическом диске.


Так вот - не верьте билли.


Для кода исполняемого в "виртуальном приложении" путь будет не к корневой директории сайта, а к корневой директории "виртуального приложения".

Как сослаться на корень сайта из кода "виртуального приложения" Я пока не смотрел - просто подмапил нужную мне папочку в приложение.

Но приложений у меня несколько, а работать они должны с одной и той же папкой.

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

#5 
Murr патриот09.08.18 18:48
Murr
NEW 09.08.18 18:48 
в ответ Murr 09.08.18 12:42

Еще одна нособойка.


Имеем ВЦФ-сервис работающий под ИИС.


Сервису надо возвращать некоторый комплексный тип.

Для примера возьму с мелкомягкого сайта:

[DataContract] public class CompanyLogo { [DataMember] private string ShapeOfLogo; [DataMember] private int ColorOfLogo; }


пока этот тип лежит в дллке сервиса - все работает.

Мне, однако, хочется его поиметь в отдельной библиотеке.


И вот как только - так сразу вываливается несовпадение кодировок техт/хмл => техт/соап+хмл...


Ну и как тут быть? Мне класс шарить хочется... не с сервисом и без клиента...

#6 
Срыв покровов коренной житель09.08.18 20:36
NEW 09.08.18 20:36 
в ответ Murr 09.08.18 18:48

мурр, начни пользоваться гуглом

#7 
Murr патриот09.08.18 20:50
Murr
NEW 09.08.18 20:50 
в ответ Срыв покровов 09.08.18 20:36

Ну расскажи мне как пользоваться гооглем.

Только вот интересует меня не что надо поправить чтобы можно было работать - новый биндинг прописать не проблема, а причина, по которой появляется необходимость это дело менять - местоположение кода роли играть не должно, но ... играет.

#8 
Murr патриот20.08.18 11:57
Murr
NEW 20.08.18 11:57 
в ответ Murr 09.08.18 18:48

Еще одна мелкая непонятность в WCF,

Имеем простой класс в качестве передаваемого объекта из веб-сервиса на клиента. (упрощено)


[DataContract]
public class TPartialReport

{

[DataMember]
public List<TFile> Files2 { get; set; }

[DataMember]

public TFileList Files4 { get; set; }
}

В полиси прописано, что в бизнес-логике должны использоваться только пользовательские типы.

Первый ДатаМембер этому требованию не соответствует. Собственно по-этому и вводится второй.

TFileList определен как [DataContract] public class TFileList : List<TFile> {}.


Вопросик - Так какого рожна после замены меняется требование к типу контента - хмл =>соап+хмл?


Ну и вопросик второй - Как оформить Список/Массив для ДатаКонтракта? Чтобы не появлялся соап...


#9 
Срыв покровов коренной житель20.08.18 23:02
NEW 20.08.18 23:02 
в ответ Murr 20.08.18 11:57

В каком полиси это прописано?

#10 
Murr патриот21.08.18 10:41
Murr
NEW 21.08.18 10:41 
в ответ Срыв покровов 20.08.18 23:02

В моем. смущ

#11 
Срыв покровов коренной житель21.08.18 12:00
NEW 21.08.18 12:00 
в ответ Murr 21.08.18 10:41

тогда и спрашивай там, где его писали

#12 
Murr патриот21.08.18 12:39
Murr
NEW 21.08.18 12:39 
в ответ Срыв покровов 21.08.18 12:00

тогда и спрашивай там, где его писали

------

Ответь проще - "И я не знаю".... Я такое вполне пойму.


А вообще - интересно - существует ли механизм перекачки данных об наследовании?

Функциональность в рамках WCF не перекачивают - это понятно.

А вот простое наследование от хорошо известных базовых типов?


Как обойти - Я придумал, но многовато писанины и сложное соглашение об наймспейсах...

#13