Добавление behaviorExtensions в конфиг сервисов

Добрый день!

Подскажите, как корректно добавить блок behaviorExtensions в конфиг системы.

Добавил блок 

<behavior>

<log4net />

</behavior><br />
<br />
И в блоке RestServiceBehavior добавил log4net




<behavior name="RestServiceBehavior"><br />
            <errorHandler/><br />
            <matchAllMessage/>

            <log4net

/><br />
            <threadContextInitializer/><br />
            <serviceMetadata httpGetEnabled="true" /><br />
            <serviceDebug includeExceptionDetailInFaults="true"  /><br />
        </behavior>

в файл behaviours.config



В Web.config в Terrasoft.WebApp.

<extensions>

<behaviorExtensions>

<add name="log4net"

type="Integration.Log4NetBehaviorExtensionElement, Integration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

</behaviorExtensions>

</extensions>



Класс Log4NetBehaviorExtensionElement также определил в Integration.



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

Нравится

5 комментариев

Добрый день.

<behaviorExtensions> нужно прописывать в Extensions.config (там же написаны некоторые рекомендации). Ваш класс должен наследоваться от абстрактного класса «BehaviorExtensionElement» (namespace System.ServiceModel.Configuration). Проверьте ваш класс на доступность в БП или сервисе пред его записью в behaviorExtensions.

VladKapitanchyk,

 

Влад, добрый день!

Подскажите, пожалуйста, что значит:

<!-- Значения атрибутов type изменяются при автосборке. При добавлении/удалении/изменении содержимого оповестить ответственного за автосборку! -->

Каким образом необходимо уведомить ответственного за автосборку?

Тетиков Дмитрий Владимирович,

Добрый день.

На этот комментарий можете не обращать внимание, это относится к старой логике. Посмотрите на версию вашего extension, там указывается версия сборки, возьмите такую же, как и в предыдущих extensions.

VladKapitanchyk, 

Влад, сделал согласно рекомендациям. Первоначально была ошибка 

Exception Message: Не удалось загрузить тип "ArdsinBankCode.Integration.Log4NetBehaviorExtensionElement, ArdsinBankCode.Integration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", зарегистрированный для расширения "log4net". (D:\TSroot\ArdshinBank7102-2\Terrasoft.WebApp\ServiceModel\http\behaviors.config line 29)

Exception Type: System.Configuration.ConfigurationErrorsException

Exception Source: System.Configuration в логах Application.



После правки версии ошибки не возникает, однако ошибка вызова сервиса при авторизации осталась. 

Класс при вызове из БП доступен.

Подскажите, какие еще могут быть нюансы, пожалуйста.

&lt;extensions&gt;
  &lt;behaviorExtensions&gt;
    &lt;!-- Делать разрывы строк внутри атрибута type запрещено! --&gt;
    &lt;!-- Значения атрибутов type изменяются при автосборке. При добавлении/удалении/изменении содержимого оповестить ответственного за автосборку! --&gt;
    &lt;add name="errorHandler" type="Terrasoft.Web.Common.ServiceModel.ErrorHandlerElement, Terrasoft.Web.Common, Version=7.10.2.1416, Culture=neutral, PublicKeyToken=edaadfbc3b0bb879" /&gt;
    &lt;add name="matchAllMessage" type="Terrasoft.Web.Common.ServiceModel.MatchAllMessageElement, Terrasoft.Web.Common, Version=7.10.2.1416, Culture=neutral, PublicKeyToken=edaadfbc3b0bb879" /&gt;
    &lt;add name="threadContextInitializer" type="Terrasoft.Web.Common.ServiceModel.ThreadContextInitializerElement, Terrasoft.Web.Common, Version=7.10.2.1416, Culture=neutral, PublicKeyToken=edaadfbc3b0bb879" /&gt;
	&lt;add name="log4net" type="ArdsinBankCode.Integration.Log4NetBehaviorExtensionElement, ArdsinBankCode.Integration, Version=7.10.2.1416, Culture=neutral, PublicKeyToken=edaadfbc3b0bb879" /&gt;
  &lt;/behaviorExtensions&gt;
&lt;/extensions&gt;
 
&lt;behavior name="RestServiceBehavior"&gt;
			&lt;errorHandler/&gt;
			&lt;matchAllMessage/&gt;
			&lt;log4net/&gt;
			&lt;threadContextInitializer/&gt;
			&lt;serviceMetadata httpGetEnabled="true" /&gt;
			&lt;serviceDebug includeExceptionDetailInFaults="true"  /&gt;
		&lt;/behavior&gt;

 

Попробуйте выполнить следующее:

1) Проверить логи windows на сервере, там должна быть более детальная информация об ошибке (это будет либо error, либо warning)

2) Если после выполнения первого пункта ситуация не прояснится, можно настроить трассировку wcf сервисов

https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/tracing-a…

Показать все комментарии