2011-05-31 46 views
6

我從我的Web服務中得到以下未處理的異常 - 這與我的代碼無關,它僅在間歇性時發生多次異步調用服務器。我已經包含了我返回的代碼響應對象,以及這是唯一返回的東西(因此泛型響應是String的List)。 有沒有人知道爲什麼Web服務可能會拋出此問題?Web服務調用導致System.Xml.XmlException異常:'。',十六進制值0x00

整個堆棧跟蹤:

System.Xml.XmlException: '.', hexadecimal value 0x00, is an invalid character. Line 4, position -88. 
    at System.Xml.XmlTextReaderImpl.Throw(Exception e) 
    at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args) 
    at System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String[] args) 
    at System.Xml.XmlTextReaderImpl.ThrowInvalidChar(Int32 pos, Char invChar) 
    at System.Xml.XmlTextReaderImpl.ParseNumericCharRefInline(Int32 startPos, Boolean expand, BufferBuilder internalSubsetBuilder, Int32& charCount, EntityType& entityType) 
    at System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars) 
    at System.Xml.XmlTextReaderImpl.ParseText() 
    at System.Xml.XmlTextReaderImpl.ParseElementContent() 
    at System.Xml.XmlTextReaderImpl.Read() 
    at System.Xml.XmlTextReader.Read() 
    at System.Xml.XmlReader.ReadElementString() 
    at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPartsLibraryService.Read29_GenericResponseOfListOfString(Boolean isNullable, Boolean checkType) 
    at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPartsLibraryService.Read34_UploadPartsResponse() 
    at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer5.Deserialize(XmlSerializationReader reader) 
    at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) 

簡單的Response對象(僞):

Public Class GenericResponse(Of T) 
    Public Enum StateOptions 

    Private _result As T 
    Private _state As StateOptions 
    Private _msg As String 

    Public Property Result() As T 
    Public Property State() As StateOptions 
    Public Property Message() As String 
End Class 

我跑提琴手,但是這是唯一的非平常的結果我還沒有看到,但我不認爲這會導致我遇到的問題?

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><UploadPartsResponse xmlns="http://autovhc.co.uk/"><UploadPartsResult><Result><string>-------------------------------------------------- 
01/06/2011 14:38:33 
Upsert Exception 
Backend sent unrecognized response type: &#x0; 
    at Npgsql.NpgsqlState.&lt;ProcessBackendResponses_Ver_3&gt;d__a.MoveNext() in C:\projects\Npgsql2\src\Npgsql\NpgsqlState.cs:line 966 
    at Npgsql.ForwardsOnlyDataReader.GetNextResponseObject() in C:\projects\Npgsql2\src\Npgsql\NpgsqlDataReader.cs:line 1163 
    at Npgsql.ForwardsOnlyDataReader.GetNextRowDescription() in C:\projects\Npgsql2\src\Npgsql\NpgsqlDataReader.cs:line 1181 
    at Npgsql.ForwardsOnlyDataReader.NextResult() in C:\projects\Npgsql2\src\Npgsql\NpgsqlDataReader.cs:line 1367 
    at Npgsql.NpgsqlCommand.ExecuteNonQuery() in C:\projects\Npgsql2\src\Npgsql\NpgsqlCommand.cs:line 523 
    at VHC.Connections.DataAccess2.DataAccess.sqlNonQuery(NpgsqlCommand sqlCmd, Boolean closeConnection) in E:\svn_repository\vhc.server.solution\vhc.connections\Tags\v_3_0_0_5\New\ConnectionProxys\DataAccess.vb:line 119 
    at VHC.Connections.DataAccess2.DataAccess.sqlNonQuery(NpgsqlCommand sqlCmd) in E:\svn_repository\vhc.server.solution\vhc.connections\Tags\v_3_0_0_5\New\ConnectionProxys\DataAccess.vb:line 97 
    at PartsLibServerSideClasses.DAO.PLM_PsaFormat_DAO.Update(PartLibraryPartTO part, Int32 entityref, NpgsqlConnection conn) in C:\Applications\PartsImporter\Import_Library-Stable\PartsLibServerSideClasses\DAO\PSA\PLM_PsaFormat_DAO.vb:line 61 
    at PartsLibServerSideClasses.DAO.PLM_PsaFormat_DAO.Upsert(PartLibraryPartTO part, Int32 entityref) in C:\Applications\PartsImporter\Import_Library-Stable\PartsLibServerSideClasses\DAO\PSA\PLM_PsaFormat_DAO.vb:line 21 
    at PartsLibServerSideClasses.Parsing.PartsLibraryManager.SubmitPartToLibrary(PartLibraryPartWorkSegmentContainer partContainer) in C:\Applications\PartsImporter\Import_Library-Stable\PartsLibServerSideClasses\BOL\PartsLibraryManager.vb:line 70 
</string></Result><State>Fail</State></UploadPartsResult></UploadPartsResponse></soap:Body></soap:Envelope> 
+0

你有文字形式的回覆嗎? – abatishchev 2011-05-31 09:49:53

+0

我看不到任何可能導致此問題的事情......有沒有人遇到過這個問題? – 2011-06-07 13:43:44

+1

如果它不是你的代碼,那麼可能是因爲你的代碼正在調用? – 2011-06-07 14:53:24

回答

1

我已經看到了這之前的錯誤代碼,沒有編碼或刪除0,當用戶進行復制/粘貼值從另一應用程序和爲零的數據庫字段,然後一路走出來的那些記錄XML解析器。

+0

源數據來自文件。爲了將這些文件存入數據庫,我們將文件的每一行解析爲一個對象,並將這些對象的集合發送到Web服務,然後將它們插入到數據庫中。所以沒有任何複製/粘貼,並且返回的數據已經通過序列化過程了。 – 2011-10-27 14:16:29

+0

我並不是建議你的NULL被插入的方式是相同的,只是你應該仔細檢查數據庫中的數據,看看它是存儲在第一位的數據還是數據來自的文件。如果unicode字符在沒有正確編碼的情況下直接插入到非Unicode數據中,也會發生這種情況。 (unicode的兩個字節之一通常是0) – MartyTPS 2011-10-27 14:32:49

+0

我檢查了,但看不到任何引起這個的東西。這個想法+1。 – 2011-10-27 15:07:15