我想寫一個WCF管道服務。我的一個服務方法將收到一個object[]
作爲參數並填充它,模擬IDataReader
的GetValues
方法。但是每當我從客戶端調用這個方法時,我會得到一個完整的null
values數組。我也嘗試將object[]
參數更改爲ref object[]
,但沒有任何更改。數組作爲參數傳遞給要填充的WCF服務回來充滿空的
在第一次寫這個問題後,我一直在做一些測試,這是比我第一次雖然更奇怪。漏洞問題似乎發生在客戶端。下面是一些代碼(從客戶端的所有拍攝):
object[] values = new object[reader.FieldCount];
// values is filled up with null's
reader.GetValues(values);
// values is again filled up with null's (see code bellow)
這是GetValues
,通過上面的代碼名爲:
public int GetValues(object[] values)
{
// values is filled out with null's, naturally
return DatabaseProxy.Instance.GetValues(_ConnectionId, _ReaderId, ref values);
// values has content here! (values[0] == "hello this is a string")
}
在DatabaseProxy.Instance
的GetValues
方法是我的服務器的方法,它需要一個ref
參數,否則它將返回一個完整的數組null
s。通過使用ref
修飾符,現在它返回值,但這些值在我的客戶端內消失。任何想法這裏發生了什麼?
你確定Web服務實際上是返回任何值到客戶端? –
你能發佈你的返回值的服務方法嗎?您的服務類實現的服務接口以及用於調用該方法的代碼? – Chris
如果你打算通過ref傳遞值,你必須在任何地方使用ref ...例如,你必須在這裏引用:NewChannel.GetValues(connectionId,readerId,ref values) –