2013-07-19 80 views
1

我有一個WCF服務如何配置端點

我的web.config看起來是這樣的:

<system.serviceModel> 

<bindings> 
    <webHttpBinding> 
    <binding name="crossDomain" crossDomainScriptAccessEnabled="true" /> 
    </webHttpBinding> 
</bindings> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceBehavior"> 
     <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
     <serviceMetadata httpGetEnabled="true"/> 
     <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="EndpBehavior"> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

<services> 
    <service behaviorConfiguration="ServiceBehavior" name="MyNameSpace.MyService"> 
    <endpoint address="" binding="webHttpBinding" bindingConfiguration="crossDomain" contract="MyNameSpace.IMyService" behaviorConfiguration="EndpBehavior"/> 
    </service> 
</services> 

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 

我最近發現的陣列參數此代碼的網站之一

using System.ServiceModel.Description; 
using System.ServiceModel.Dispatcher; 
using System.ServiceModel.Web; 

namespace ArraysInQueryStrings 
{ 
public class ArrayInQueryStringWebHttpBehavior : WebHttpBehavior 
{ 
    WebMessageFormat defaultOutgoingResponseFormat; 
    public ArrayInQueryStringWebHttpBehavior() 
    { 
     this.defaultOutgoingResponseFormat = WebMessageFormat.Json; 
    } 

    public override WebMessageFormat DefaultOutgoingResponseFormat 
    { 
     get 
     { 
      return this.defaultOutgoingResponseFormat; 
     } 
     set 
     { 
      this.defaultOutgoingResponseFormat = value; 
     } 
    } 

    protected override QueryStringConverter GetQueryStringConverter(OperationDescription operationDescription) 
    { 
     return new ArrayQueryStringConverter(); 
    } 
} 
} 

如何在web.config中使用此擴展類。

它似乎是一個端點行爲,但不知道如何使用它。

任何幫助表示讚賞

+0

究竟是你想實現什麼目標?我想你可能走錯了路。 –

+0

我的服務正常工作。我創建了一個函數accespt數組,我得到了錯誤,但類型'System.String []'不能被'QueryStringConverter'轉換。所以我發現解決方案是更新webhtppbehaviour。 – Moons

回答

2

要添加自定義的行爲,您需要添加您的派生的行爲,在配置文件中的行爲擴展,需要添加新的行爲擴展類型。請參閱這篇文章 - Custom Behavior won't register in my web.config

public class ArrayInQueryStringBehaviorExtension : BehaviorExtensionElement 
{ 
public override Type BehaviorType 
{ 
    get { return typeof(ArrayInQueryStringWebHttpBehavior); 
} 
} 

protected override object CreateBehavior() 
{ 
    return new ArrayInQueryStringWebHttpBehavior(); 
} 
} 

配置文件(你需要指定我已標記下方括號您的程序集名)

<extensions> 
    <behaviorExtensions> 
    <add name=" ArrayInQueryStringWebHttpBehavior " type="[Namespace]. ArrayInQueryStringBehaviorExtension, [Assembly Name], [Assembly Version], [Assembly Culture], PublicKeyToken=null" /> 
    </behaviorExtensions> 
</extensions> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="arrayInQueryBehavior"> 
     <webHttp/> 
     < ArrayInQueryStringWebHttpBehavior /> 
    </behavior> 
    </endpointBehaviors> 
<behaviors> 
+0

在發佈我的問題之前,我已經嘗試了這個,但我沒有收到它。我寫了幾乎所有的代碼在這個問題上。你能告訴我什麼另外我需要寫我的問題根據我的問題 – Moons

+0

我已經提到了一些代碼上面,你可以嘗試。配置文件鍵有地方你需要正確地提及命名空間和彙編。讓我知道它是否適合你 – vibhu

+0

非常感謝... – Moons