在代码中为端点行为添加行为扩展

时间:2011-09-17 19:30:40

标签: wcf c#-4.0

我在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中存在错误 - Visual Studio无法看到WebAppBehaviourElement并收到错误:/

所以我认为可以在代码中将此扩展添加到endpointBehaviours?在代码中我应该这样做吗?

2 个答案:

答案 0 :(得分: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
  }

您可以在config中添加主机。如果您也为此选择代码,请将其添加到global.asax中,如下所示

ExtendedHostFactory factory = new ExtendedHostFactory();
RouteTable.Routes.Add(new ServiceRoute(@"myservice/path", factory, typeof(MyService)));

答案 1 :(得分:0)

Visual Studio 2010针对XSD架构验证配置文件。 一个是在这里定义的system.serviceModel没有你的自定义行为,但程​​序运行。