2011-09-17 27 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不是由Visual Studio可見,並得到錯誤:/

所以我認爲可以在代碼中將此擴展添加到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))); 
相關問題