2012-06-21 21 views
6

剛剛在我的公司使用IIS 7.5在服務器上部署了我的WCF服務,並且一切似乎都正常。但是,當我設置我的客戶端應用程序並添加服務器引用到服務器,然後使用此代碼。WCF服務客戶端應用程序獲取「對象未設置爲對象的實例」

ServerReference.ServiceClient client = new ServerReference.ServiceClient(); 

var s = client.GetBrand("Audi", false); 

我收到一個異常,說「對象引用未設置爲對象的實例」。 s對象不應該爲空(我們嘗試了localhost上的服務,我們在它所在的同一個項目中都有這個服務)。

你看着stackstrace,它看起來像這樣。

21.6.2012 16:16:29 

未將對象引用設置爲對象的實例。

Server stack trace: 
    at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter) 
    at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

有什麼建議? P.S WCF服務託管的CPU不具備視覺工作室,所以我無法通過它進行調試

+2

[WcfTestClient](http://msdn.microsoft.com/en-us/library/bb552364.aspx)是否適用於託管服務?將其縮小以查看它是否是您的實現,或者服務無法初始化。合同也可能已經改變(取決於你最後得到的元數據)可能導致服務無法實例化。 –

回答

2

正如我在評論中所建議的,確保您可以使用WcfTestClient獲取數據。這既證實了該服務正在運行,並且幾乎單元測試了方法調用,以確保它從客戶的角度出發。第二,(除非你將它灌水到SO上發佈),使用correct WCF call method來避免這些問題。一旦引入依賴關係,預測失敗(儘管您的服務,客戶端的互聯網連接或其他)總是一個好主意。

如果不瞭解項目的其他內容,很難描述如何修復它。諸如舊的WSDL,錯誤配置的* .config,服務器上未暴露的端點以及其他問題等因素可能是問題的根源,但考慮到您展示的內容,我不知道它可能是什麼。

如果您可以提供更多信息,我會很樂意更新我的答案,並提供更多的建議。現在,請查看服務器上的enabling WCF tracing,以便您可以回顧整個日誌,看看服務器端是否有任何異常(除了遍歷客戶端的呼叫和檢查外)。

+0

WCF追蹤目前正在工作中(不太明白爲什麼)...根據我今天的研究是有約束力的。有一件事我注意到和fint有趣的是,當即時通訊使用一個測試客戶端,並調用本地主機上的服務,我用一個空參數調用它時,它返回與IIS託管服務一樣的錯誤(與每個參數)。這是需要考慮的事情,p.s還有什麼其他的東西你會希望我在這裏發佈以更好地理解 – user1279173

1

您不必調試它。只需在web.config中添加WCF跟蹤設置,即可獲取有關原始錯誤的信息。見http://msdn.microsoft.com/en-us/library/ms733025.aspx

+0

copy-id代碼並在我的webconfig中輸入,並且什麼也沒有發生。沒有創建文件或類似的東西 – user1279173

+0

您是否在使用不同身份的應用程序池中運行WCF服務?如果是這樣,你需要確保它對目錄有完整的控制權。我認爲,通過信息級別跟蹤,您只需瀏覽服務即可測試,您可能需要詳細級別。 – Rich

0

我在我的項目中有同樣的問題,在我的情況下,我發現異常發生在服務構造函數中,但它只在我調用任何方法時觸發。

0

配置跟蹤源以發出跟蹤並設置跟蹤級別,設置活動跟蹤和傳播以支持端到端跟蹤關聯,並將跟蹤偵聽器設置爲訪問跟蹤。

Windows Communication Foundation(WCF)輸出以下用於診斷跟蹤的數據: 跨應用程序的所有組件(如操作調用,代碼異常,警告和其他重要的處理事件)中的過程里程碑跟蹤。 跟蹤功能故障時的Windows錯誤事件。見Event Logging in WCF

相關問題