に呼び出したとき、私は、Webサービスを作成している。ここで普及してデータベースからXMLドキュメントに誤りがあり... Webサービス
をretreived 11thousandレコードのリストを返す必要があり、その中に関数が私の関数でありますWebサービスで
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class BBI : System.Web.Services.WebService
{
[WebMethod]
public List<myObject> getAll()
{
List<myObject> result = new List<myObject>();
PsqlConnection conn = new PsqlConnection("Host=soemthing;Port=something;Database=something;Encoding=IBM861");
conn.Open();
string strSql = "select 0, 1, 2, 3, 4, 5 from something";
PsqlCommand DBCmd = new PsqlCommand(strSql, conn);
PsqlDataReader myDataReader;
myDataReader = DBCmd.ExecuteReader();
while (myDataReader.Read())
{
myObject b = new myObject();
b.0 = Convert.ToInt32(myDataReader[0].ToString());
b.1 = myDataReader[1].ToString();
b.2 = myDataReader[2].ToString();
b.3 = myDataReader[3].ToString();
b.4 = myDataReader[4].ToString();
b.5 = myDataReader[5].ToString();
result.Add(b);
}
conn.Close();
myDataReader.Close();
return result;
}
}
次に、クライアントプログラムでこのWebサービスへのWeb参照を追加し、参照BBIを呼び出します。 次に、getAll関数を呼び出して、エラーを取得します。XML文書にエラーがあります(1、63432)。ここで
public List<BBI.myObject> getAll()
{
BBI.BBI bbi = new BBI.BBI();
List<BBI.myObject> allBooks = bbi.getAll().OfType<BBI.myObject>().ToList();
return allBooks;
}
が総例外の詳細
System.InvalidOperationException was unhandled by user code
Message=There is an error in XML document (1, 71897).
Source=System.Xml
StackTrace:
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at BBI.BBI.getAllBooks() in c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vefur\73db60db\a4ee31dd\App_WebReferences.jl1r8jv6.0.cs:line 252
at webServiceFuncions.getAllBooks() in c:\Documents and Settings\forritari\Desktop\Vefur - Nýr\BBI\trunk\Vefur\App_Code\webServiceFuncions.cs:line 59
InnerException: System.Xml.XmlException
Message='', hexadecimal value 0x01, is an invalid character. Line 1, position 71897.
Source=System.Xml
LineNumber=1
LinePosition=71897
SourceUri=""
StackTrace:
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.ParseNumericCharRefInline(Int32 startPos, Boolean expand, StringBuilder internalSubsetBuilder, Int32& charCount, EntityType& entityType)
at System.Xml.XmlTextReaderImpl.ParseCharRefInline(Int32 startPos, 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.XmlSerializationReaderBBI.Read2_Book(Boolean isNullable, Boolean checkType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderBBI.Read20_getAllBooksResponse()
at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer35.Deserialize(XmlSerializationReader reader)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
InnerException:
あるデータベースレコードは、誰かがイムはここで間違っているのかを見ることができます例¤rmann Kr. Einarsson
とTv” ‘fint˜ri
ために、奇妙なシンボルのすべての種類を含むていますか?
データベースにはこれらの文字が含まれていますが、サーバーのデバッグ時には消えています。しかし、引用符があると思われるときはこの記号があります。私はこれがXMLを台無しにしているかもしれないと思う。 –
XmlSerializerは無効な文字を送信できないため、少し壊れています。たぶん、回避策がある、グーグルで試してみてください。ただし、データベース内のエンコーディングを正しく処理するための最良の解決方法があります。そうすれば、問題を引き起こす無効な文字はありません。 – fejesjoco
送信前にテキストをバイトに変換して解決しました。 –