簡體   English   中英

WCF-從客戶端和服務器端調用相同的服務

[英]WCF - call same service from client and server side

我有一個簡單的WCF服務,可以通過服務引用從后面的代碼中調用服務器端。 它用於驗證和工作,並且由Visual Studio自動設置,並且我認為使用SOAP是因為綁定是wsHttpBinding。

我想使用相同的WCF服務,但使用ajax()從jQuery稱為客戶端。 我正在嘗試通過這些說明來實現它。

但是,如果我進行了更改以使客戶端調用能夠正常工作,則必須添加修飾符,在該修飾符之下,我認為這將破壞服務器端的作用,並更改web.config中的system.serviceModel部分。

[WebInvoke(Method = "POST",
    BodyStyle = WebMessageBodyStyle.Wrapped,
    ResponseFormat = WebMessageFormat.Json,
    RequestFormat= WebMessageFormat.Json) ]

我如何擁有可以從服務器端和客戶端(jQuery / ajax)調用的WCF服務?

或者換種說法,這可能是措辭不正確,端點可以有多個綁定嗎?

WCF中的端點具有ABC

  • 地址
  • 捆綁
  • 合同

因此,因此:不,單個端點不能具有多個綁定。 但是同一合約可以有多個端點!

因此,如果要通過SOAP和REST公開具有基本相同功能的兩個方法,則需要具有兩個端點。

您可以定義自己的服務方法,以使其可以從SOAP和REST調用,如您所提到的鏈接所示。

然后,您需要兩個單獨的端點:

<services>
   <service name="YourService">
     <endpoint
           address="http://YourServer/YourVirtualDir/YourService.svc"
           binding="wsHttpBinding"
           contract="IYourService" />
     <endpoint
           address="http://YourServer/YourVirtualDir/YourService2.svc"
           binding="webHttpBinding"
           behaviorConfiguration="webCallable"
           contract="IYourService" />
   </service>
</services>

您必須定義一個包含<webHttp/>行為的終結點行為-或者您需要具有一個* .svc文件,該文件使用WebServiceHost (而不是普通的ServiceHost )來承載REST服務。

如您所見,您現在有兩個單獨的終結點(虛擬目錄中有兩個單獨的* .svc文件),兩個單獨的地址-但它們共享相同的協定(定義相同的操作)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM