WCF работает под IIS? - PullRequest
       8

WCF работает под IIS?

2 голосов
/ 27 марта 2009

У нас есть веб-проект, содержащий как пользовательский интерфейс ASP.Net (формы), так и некоторые веб-службы WCF. Он размещен в IIS 6. И пользовательский интерфейс, и службы WCF используют инструмент создания PDF, для которого требуется лицензия, хранящаяся в разделе <appSettings> файла web.config. Лицензия основана на домене веб-сайта, т.е. example.com (все субдомены включены в лицензию).

Когда вызывается DLL инструмента, он проверяет, действительно ли он работает в домене, для которого он лицензирован. Когда пользовательский интерфейс обращается к этому инструменту, все работает нормально. Когда службы WCF делают то же самое, инструмент каким-то образом получает имя сервера, а не домена, и считает, что он не лицензирован.

Я действительно не хочу концентрироваться на инструменте, я хотел бы знать следующее:

Если файлы .aspx и .svc (и их родительская DLL) размещены на одном веб-сайте IIS 6 и в виртуальном каталоге, должны ли они работать под идентичной учетной записью / пользователем / набором разрешений / etc? И имеет ли значение, что реализация службы WCF (и контракты) находятся в отдельной DLL?

Ответы [ 2 ]

3 голосов
/ 27 марта 2009

Интересно, как инструмент выполняет проверку ... Я ожидаю, что вам может понадобиться включить режим совместимости ASP.NET . Другая вещь, которую нужно попробовать, - сделать адрес явным (а не относительным) в конфигурации WCF.

Нет, это не имеет значения для отдельных dll, и это не должно иметь значение для учетных записей (хотя все возможно!).

редактирование:

или в файле web.config, под system.serviceModel:

 <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
1 голос
/ 27 марта 2009

Включение совместимости с ASP.Net решает проблему. Спасибо Марк Гравелл! Однако стоит отметить, что вам также необходимо изменить класс, реализующий контракт на обслуживание - для класса требуется следующий атрибут:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

Также может быть установлено значение «Обязательно». На MSDN .

есть удобная таблица .

(Я не знаю, будет ли работать явная адресация, мы не можем ее использовать, потому что служба находится за балансировщиком нагрузки с разгрузкой SSL (F5). Поэтому WCF считает, что служба работает через HTTP, тогда как фактически HTTPS.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...