Пользовательское поведение конечной точки с использованием стандартного webHttpEndpoint - PullRequest
1 голос
/ 06 апреля 2011

В настоящее время у нас есть работающая служба REST WCF.Я пытаюсь реализовать пользовательское поведение для обработки ошибок, которое будет возвращать пользовательский объект JSON.Я полагаю, что статья, найденная здесь Обработка исключений WCF с IErrorHandler , поможет, но пример показывает, как добавить поведение с помощью кода.Мы предоставляем услугу через IIS и не имеем ServiceHost.Может кто-нибудь подсказать мне, как добавить свой собственный класс обработки ошибок в web.config?

Я искал по всему Google и SO и нашел несколько примеров, которые делают то, что я 'Я пытаюсь выполнить, но мое понимание WCF, вероятно, не позволяет мне полностью понимать.

Вот все, что мы настроили для конечных точек.

<standardEndpoints>
  <webHttpEndpoint>
    <!-- 
        Configure the WCF REST service base address via the global.asax.cs file and the default endpoint 
        via the attributes on the <standardEndpoint> element below
    -->
    <standardEndpoint helpEnabled="true" automaticFormatSelectionEnabled="false"/>
  </webHttpEndpoint>
</standardEndpoints>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>        
   </serviceBehaviors>
</behaviors>

1 Ответ

4 голосов
/ 06 апреля 2011

К сожалению, вам придется написать некоторый код.Хитрость заключается в том, чтобы поместить код в библиотеку классов и затем настроить web.config для использования этого кода.

Скопируйте класс ErrorHandlerServiceBehavior из примера, который вы используете, скомпилируйте его в свой проект WCF.1006 *

Создание расширения поведения:

<extensions>
    <behaviorExtensions>
        <add name="myBehavior" type="MyLibrary.ErrorHandlerServiceBehavior, MyLibrary,
            Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
   </behaviorExtensions>
</extensions>

Применение расширения поведения к конфигурации поведения:

<behaviors>
    <behavior configurationName="testBehaviorConfiguration">
        <myBehavior />
    </behavior>
</behaviors>

Применение конфигурации поведения к службе:

<services>
    <service name="MyLibrary.MyService"   
      behaviorConfiguration="testBehaviorConfiguration">
        <endpoint binding="basicHttpBinding" 
          contract="MyLibrary.IMyService"/>
    </service>
</services>
...