簡體   English   中英

WCF客戶端計算機是否必須需要WCF服務已引用的所有DLL?

[英]Do WCF Client machine MUST needs to have all DLLs WCF service has referenced to?

編輯

請添加對您的答案的引用,以便我說服我的系統管理員。 謝謝

腳本

我有一個WCF Web服務,它引用了一些第三方dll,例如Microsoft.SharePoint,現在當我嘗試使用此代碼從客戶端計算機調用Web服務時,它表示未找到Microsoft.SharePoint。

當我將Microsoft.SharePoint添加到客戶端計算機的GAC時,問題確實消失了,但是由於我們為什么需要將Microsoft.SharePoint dll添加到客戶端WCF計算機,我無法向我們的系統管理員解釋它。 有人可以解釋為什么我們必須將WCF服務的引用的dll添加到客戶端計算機。

順便說一句,我通過將Microsoft.SharePoint復制到本地但沒有太多更改來部署了WCF服務。

這是錯誤,當我從GAC刪除dll時出現錯誤,

說明:無法加載文件或程序集“ Microsoft.SharePoint,版本= 15.0.0.0,文化=中性,PublicKeyToken = 71e9bce111e9429c”或其依賴項之一。 該系統找不到指定的文件。

服務器堆棧跟蹤:位於System.Runtime的SourceCode.Workflow.Runtime.Extenders.ResolverExtenderBase.Execute(對象上下文,字符串數據)處,位於SourceCode.Workflow.Runtime.Extenders.CodeExtender.OnExecute(對象上下文,XmlElement數據,ResolverManager resolverManager)處。 Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object [] args,對象服務器,Object []&outArgs)在System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)

異常在[0]處重新拋出:在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32類型)的System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)處。 SourceCode.KO.ProcessInstance.ExecuteExtender(Guid,State,ContextType,Object,Int32,String,Guid)上的Runtime.IK2Extender.Execute(對象上下文,字符串數據)在執行K2工作流期間引發了異常。 現在,該流程實例處於錯誤狀態。 下面列出了例外的詳細信息。

System.Net.NetworkCredential creds = GetNetWorkCredentials();
   BasicHttpBinding binding = new BasicHttpBinding();
   binding.Security.Mode = BasicHttpSecurityMode.Transport;
   binding.Security.Transport.ClientCredentialType = creds.httpClientCredentialType;
   ChannelFactory<Portal.WebServices.Internal.IPort> factory = new ChannelFactory<Portal.WebServices.Internal.IPort>(binding);
   factory.Credentials.Windows.ClientCredential = creds;
   factory.Credentials.UserName.UserName = creds.UserName;
   factory.Credentials.UserName.Password = creds.Password;
   Portal.WebServices.Internal.IPort proxy = factory.CreateChannel(new EndpointAddress(siteURL + "/_vti_bin/portal/Port.svc"));
   Portal.WebServices.Internal.FewObject[] invoices = proxy.GetInvoices(IDs);

您無需將添加到WCF服務的Dll添加到客戶端服務器,而僅在將對象添加到其接口時才添加。

一個同事添加了一個OperationContract,如下所示,

[OperationContract]
    void AddEventReceiver(string siteUrl, string listName, string assemblyName, string className, SPEventReceiverType receiverType);

WCF服務失敗,因為它無法編譯接口中的引用對象,在本例中為“ SPEventReceiverType”。

因此,如果不是通用類型,請確保將對象引用添加到客戶端計算機。

暫無
暫無

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

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