Как отладить Сервис WCF с Контекстом HTTP?

Используйте методы экземпляра, если это возможно.

общественность Использования статический Func [T, U] (статические ссылки на функцию, которыми можно заменить ложные функции), где методы экземпляра не возможны.

6
задан JL. 5 October 2009 в 12:25
поделиться

4 ответа

В WCF для HttpContext задано значение NULL по умолчанию и по проекту, даже если служба WCF размещена в IIS; в конце концов, WCF - это , а не ASP.NET.

Если вам действительно нужен HttpContext, вам нужно включить его отдельно через config ( web.config , если вы размещаете в IIS ваш собственный хост-приложение app.config в противном случае):

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

, и вам необходимо указать этот факт (что ваша служба разрешает или даже ожидает режим совместимости с ASP.NET), поместив этот атрибут в ваш класс службы (который реализует контракт службы):

[AspNetCompatibilityRequirements
(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]    
public class MyWCFService : IMyWCFService
{
  ......
}  

RequirementsMode = Allowed просто разрешает режим совместимости с ASP.NET, тогда как RequirementsMode = Required фактически требует is и не будет работать без него.

Как только вы это сделаете, вы должны получить свой HttpContext.

9
ответ дан 9 December 2019 в 20:46
поделиться

Вам нужно будет подключить отладчик (Visual Studio) к процессу службы IIS.

В Visual Studio перейдите в «Отладка» -> «Присоединить к процессу» и выберите процесс IIS в поле «Присоединить». для диалогового окна «Обработка».

В IIS7 имя процесса - w3wp.exe, но вам может потребоваться выбрать Показать процессы всех пользователей или Показать процесс во всех сеансах до того, как он станет доступным.

Когда отладчик правильно подключен к процессу IIS, вы можете установить одну или несколько точек останова в своем коде и вызвать службу.

1
ответ дан 9 December 2019 в 20:46
поделиться

Вы должны подключиться к процессу IIS, а именно к aspnet_wp.exe в XP и w3wp.exe на сервере 2003. Таким образом вы попадете в точки останова и т. Д.

Если вы ищете способ протестировать саму службу WCF, я бы предложил использовать WcfTestClient .

И помните, что процесс IIS не отображается в диспетчере задач, пока вы не попадете на сервер хотя бы один раз (например, после перезагрузки вам нужно будет хотя бы раз открыть страницу на сервере, чтобы процесс запустился).

1
ответ дан 9 December 2019 в 20:46
поделиться

Спасибо за решения. У меня была такая же проблема. Мое решение теперь отлично работает с 2 файлами svc.

Для решения проблемы я внес два изменения

В Web.Config я прокомментировал строку

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

и

Добавил атрибут [AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] на классы, реализующие интерфейсы.

1
ответ дан 9 December 2019 в 20:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: