2015-10-21 49 views
0

我在應用程序的某個部分開發了一個帶有ASP.net(C#,.Net Framework 4.0)的Web應用程序,我調用API來獲取一些信息。我注意到一些調用API都失敗了,我得到這個錯誤:當我檢查我看到這個堆棧跟蹤索引在調用WCF API時超出了數組範圍的邊界

Index was outside the bounds of the array.

at System.Collections.Generic.Dictionary2.Insert(TKey key, TValue value, Boolean add)

at System.Collections.Generic.Dictionary2.set_Item(TKey key, TValue value)

at Navitaire.Ncl.Validation.ValidationManager.getValidationAttributes(MemberInfo mi, Boolean& skip)

at Navitaire.Ncl.Validation.ValidationManager.validate(Object declaringObject, Object value, MemberInfo mi, List1 results)

at Navitaire.Ncl.Validation.ValidationManager.Validate(Object obj)

at Navitaire.Ncl.ServiceModel.ParameterValidationInspector.BeforeCall(String operationName, Object[] inputs)

at Navitaire.Ncl.ServiceModel.Remoting.BoilerplateSinkBase.InvokeBeforeCallInspectors(StateData stateData, RemotingMessage& message)

at Navitaire.Ncl.ServiceModel.Remoting.BoilerplateServerSink.ProcessMessage(IServerChannelSinkStacksinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)

at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)

我把一個破發點上捕獲異常部分,所以每次出現錯誤時,應用程序都會停止,我可以讀取異常。我注意到,如果在這一刻我再次調用API(將光標移到API調用行),它工作正常。所以這意味着我傳遞給API的參數沒有問題。

我試圖在三種不同的環境中運行完全不同的網絡和不同的互聯網連接的應用程序,但我仍然得到了同樣的錯誤。

你能請別人幫我解決這個案子嗎?

感謝

回答

0

我懷疑這是與API的問題,而不是你的代碼,特別是如果你的作品進行相同的調用第二次。
我相信API正在用內部字典做一些事情,第一次調用它時不會正確設置,但第二次它已經「正確地」工作了。

您是否可以查看/訪問您調用API方法的代碼?

如果是這樣,你是最好的運行調試旁邊您的應用程序,將在進入該方法的斷點,單步跳過其中的線路,看看它在做什麼以及爲什麼它可能會破裂。
如果這是你的API,或者你被允許共享這個方法的代碼,並且你自己找不到錯誤,請張貼API方法的代碼,我會幫你找出原因可能是什麼。

如果您無法查看代碼,我建議您與API的生產者聯繫,如果它是私人的,或者它是開放源代碼API,請分享鏈接並提供您的代碼外觀的代碼示例像(顯示你如何進行API調用),我們可以幫助診斷它。

+0

感謝您的回覆。不幸的是我沒有訪問API代碼,但它是一個私人API,我已經要求他們檢查他們的代碼。你認爲這可能是由於一些連接問題,從API返回的錯誤是不相關的? – Mehran

0

我與API開發人員進行了覈對,發現他們修復了錯誤後,他們的方面出現了一些問題,我再也沒有遇到任何錯誤。