2011-09-17 4 views
1

добавить расширение поведения в web.config:добавить к конечной точке поведения в коде

<extensions> 
     <behaviorExtensions> 
      <add name="WebAppBeaviourElement" type="WebApp.Extensions.CustomBehaviorExtensionElement, WebApp.Extensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
     </behaviorExtensions> 
    </extensions> 

    <behaviors> 
     <endpointBehaviors> 
      <behavior name="WebAppBeaviour"> 
       <WebAppBeaviourElement /> 
      </behavior> 
     </endpointBehaviors> 
    </behaviors> 

Но в Visual Studio 2010 это ошибка - WebAppBehaviourElement не видно визуально студии и получить сообщение об ошибке:/

Итак, я думаю, что это расширение можно добавить к endpointBehaviours в коде? А когда в коде я должен это делать?

+0

Какая ошибка у вас возникла? Почему вы думаете, что это ошибка? Расширения предназначены только для файла конфигурации. Если вы хотите добавить поведение в код, вы сделаете это прямо на конечной точке. –

+0

Я не помню это, но ошибка сказала, что что-то вроде WebAppBeaviourElement не может быть установлено как элемент поведения – netmajor

ответ

0

Visual Studio 2010 проверяет конфигурационный файл на XSD-схемы. Здесь определенно system.serviceModel Нет вашего пользовательского поведения, но программы работают.

+0

это проблема, с которой я сталкиваюсь: http://connect.microsoft.com/wcf/feedback/details/386511/custom-wcf -behavior-расширение-элемент-типа не найден-во-дизайна времени – netmajor

1

Вы можете расширить хост-автокрепеж

public class ExtendedHostFactory : WebServiceHostFactory

Затем добавьте поведение к хосту

protected override ServiceHost CreateServiceHost(System.Type serviceType, System.Uri[] baseAddresses) 
    { 
    ServiceHost host = base.CreateServiceHost(serviceType, baseAddresses) as WebServiceHost; 
    host.Description.Behaviors.Add(new ValidateApiKey()); // ValidateApiKey is an IServiceBehavior 
    } 

Вы можете добавить хост в конфигурации. Если вы выберете для этого код, добавьте его в global.asax, как показано ниже:

ExtendedHostFactory factory = new ExtendedHostFactory(); 
RouteTable.Routes.Add(new ServiceRoute(@"myservice/path", factory, typeof(MyService))); 
Смежные вопросы