Error in xml document at (1,280)

E

Eric

I try to call a logon webservice method with 3 parameters that are
strings.
the return value should be a xml string including all information on a
user object. When I execute the web service from visual studio test
environment the webservice method run fine and I get the expected xml
string. But when I try to call this method from a asp.NET page the
method failed and I get the following error message:

Error in xml document at (1,280)

I try to debug the web service (that is currently on my local machine)
and I see that the user object is correctly serialized and return. But
the caller of this method is catching a exception. and in the caller
the xml string is empty.
I already try to find help on the web like some similar post or white
papers but nothing seems to match.

I already tried to change the return value into the user object but I
get the same problem, it was working in the test envirronment but not
from a asp.net Page.

I saw that the problem could be due to derived data class. Is that
true? if it is , is there a work around?

I already made a few web services (but not based on derived data
class) that run perfectly by returning either objects or strings but I
never encountered this problem.

here is the Schema of my webservice provided from Webservice studio
1.0

<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:s0="http://www.sogecore.com/webservices/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="http://www.sogecore.com/webservices/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<s:schema elementFormDefault="qualified"
targetNamespace="http://www.sogecore.com/webservices/">
<s:element name="Logon">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Login"
type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Password"
type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="LogicalUserId" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LogonResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="LogonResult"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="string" nillable="true" type="s:string" />
</s:schema>
</types>
<message name="LogonSoapIn">
<part name="parameters" element="s0:Logon" />
</message>
<message name="LogonSoapOut">
<part name="parameters" element="s0:LogonResponse" />
</message>
<message name="LogonHttpGetIn">
<part name="Login" type="s:string" />
<part name="Password" type="s:string" />
<part name="LogicalUserId" type="s:string" />
</message>
<message name="LogonHttpGetOut">
<part name="Body" element="s0:string" />
</message>
<message name="LogonHttpPostIn">
<part name="Login" type="s:string" />
<part name="Password" type="s:string" />
<part name="LogicalUserId" type="s:string" />
</message>
<message name="LogonHttpPostOut">
<part name="Body" element="s0:string" />
</message>
<portType name="LoginSoap">
<operation name="Logon">
<documentation>Check user login and grant access to user if
successfull.</documentation>
<input message="s0:LogonSoapIn" />
<output message="s0:LogonSoapOut" />
</operation>
</portType>
<portType name="LoginHttpGet">
<operation name="Logon">
<documentation>Check user login and grant access to user if
successfull.</documentation>
<input message="s0:LogonHttpGetIn" />
<output message="s0:LogonHttpGetOut" />
</operation>
</portType>
<portType name="LoginHttpPost">
<operation name="Logon">
<documentation>Check user login and grant access to user if
successfull.</documentation>
<input message="s0:LogonHttpPostIn" />
<output message="s0:LogonHttpPostOut" />
</operation>
</portType>
<binding name="LoginSoap" type="s0:LoginSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<operation name="Logon">
<soap:eek:peration
soapAction="http://www.sogecore.com/webservices/Logon"
style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<binding name="LoginHttpGet" type="s0:LoginHttpGet">
<http:binding verb="GET" />
<operation name="Logon">
<http:eek:peration location="/Logon" />
<input>
<http:urlEncoded />
</input>
<output>
<mime:mimeXml part="Body" />
</output>
</operation>
</binding>
<binding name="LoginHttpPost" type="s0:LoginHttpPost">
<http:binding verb="POST" />
<operation name="Logon">
<http:eek:peration location="/Logon" />
<input>
<mime:content type="application/x-www-form-urlencoded" />
</input>
<output>
<mime:mimeXml part="Body" />
</output>
</operation>
</binding>
<service name="Login">
<port name="LoginSoap" binding="s0:LoginSoap">
<soap:address location="http://localhost/wsadmar/arlogin.asmx"
/>
</port>
<port name="LoginHttpGet" binding="s0:LoginHttpGet">
<http:address location="http://localhost/wsadmar/arlogin.asmx"
/>
</port>
<port name="LoginHttpPost" binding="s0:LoginHttpPost">
<http:address location="http://localhost/wsadmar/arlogin.asmx"
/>
</port>
</service>
</definitions>

I hope someone could be of any help to me,
thank you in advance for any advice

Eric
 
E

Eric

I try to call a logon webservice method with 3 parameters that are
strings.
the return value should be a xml string including all information on a
user object. When I execute the web service from visual studio test
environment the webservice method run fine and I get the expected xml
string. But when I try to call this method from a asp.NET page the
method failed and I get the following error message:

Error in xml document at (1,280)

I try to debug the web service (that is currently on my local machine)
and I see that the user object is correctly serialized and return. But
the caller of this method is catching a exception. and in the caller
the xml string is empty.
I already try to find help on the web like some similar post or white
papers but nothing seems to match.

I already tried to change the return value into the user object but I
get the same problem, it was working in the test envirronment but not
from a asp.net Page.

I saw that the problem could be due to derived data class. Is that
true? if it is , is there a work around?

I already made a few web services (but not based on derived data
class) that run perfectly by returning either objects or strings but I
never encountered this problem.

here is the Schema of my webservice provided from Webservice studio
1.0

<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:s0="http://www.sogecore.com/webservices/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="http://www.sogecore.com/webservices/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<s:schema elementFormDefault="qualified"
targetNamespace="http://www.sogecore.com/webservices/">
<s:element name="Logon">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Login"
type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Password"
type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="LogicalUserId" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LogonResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="LogonResult"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="string" nillable="true" type="s:string" />
</s:schema>
</types>
<message name="LogonSoapIn">
<part name="parameters" element="s0:Logon" />
</message>
<message name="LogonSoapOut">
<part name="parameters" element="s0:LogonResponse" />
</message>
<message name="LogonHttpGetIn">
<part name="Login" type="s:string" />
<part name="Password" type="s:string" />
<part name="LogicalUserId" type="s:string" />
</message>
<message name="LogonHttpGetOut">
<part name="Body" element="s0:string" />
</message>
<message name="LogonHttpPostIn">
<part name="Login" type="s:string" />
<part name="Password" type="s:string" />
<part name="LogicalUserId" type="s:string" />
</message>
<message name="LogonHttpPostOut">
<part name="Body" element="s0:string" />
</message>
<portType name="LoginSoap">
<operation name="Logon">
<documentation>Check user login and grant access to user if
successfull.</documentation>
<input message="s0:LogonSoapIn" />
<output message="s0:LogonSoapOut" />
</operation>
</portType>
<portType name="LoginHttpGet">
<operation name="Logon">
<documentation>Check user login and grant access to user if
successfull.</documentation>
<input message="s0:LogonHttpGetIn" />
<output message="s0:LogonHttpGetOut" />
</operation>
</portType>
<portType name="LoginHttpPost">
<operation name="Logon">
<documentation>Check user login and grant access to user if
successfull.</documentation>
<input message="s0:LogonHttpPostIn" />
<output message="s0:LogonHttpPostOut" />
</operation>
</portType>
<binding name="LoginSoap" type="s0:LoginSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<operation name="Logon">
<soap:eek:peration
soapAction="http://www.sogecore.com/webservices/Logon"
style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<binding name="LoginHttpGet" type="s0:LoginHttpGet">
<http:binding verb="GET" />
<operation name="Logon">
<http:eek:peration location="/Logon" />
<input>
<http:urlEncoded />
</input>
<output>
<mime:mimeXml part="Body" />
</output>
</operation>
</binding>
<binding name="LoginHttpPost" type="s0:LoginHttpPost">
<http:binding verb="POST" />
<operation name="Logon">
<http:eek:peration location="/Logon" />
<input>
<mime:content type="application/x-www-form-urlencoded" />
</input>
<output>
<mime:mimeXml part="Body" />
</output>
</operation>
</binding>
<service name="Login">
<port name="LoginSoap" binding="s0:LoginSoap">
<soap:address location="http://localhost/wsadmar/arlogin.asmx"
/>
</port>
<port name="LoginHttpGet" binding="s0:LoginHttpGet">
<http:address location="http://localhost/wsadmar/arlogin.asmx"
/>
</port>
<port name="LoginHttpPost" binding="s0:LoginHttpPost">
<http:address location="http://localhost/wsadmar/arlogin.asmx"
/>
</port>
</service>
</definitions>

I hope someone could be of any help to me,
thank you in advance for any advice

Eric

After further investigation I finally found that the string returned
by the webmethod end with the following characters . Hexadecimal


&lt;/Groups&gt;
&lt;/User&gt;</LogonResult>
</LogonResponse>
</soap:Body>
</soap:Envelope>


I supposed this is the null terminated character.
So now my question is the following, this is the way I get the string
from serialization:

XmlSerializer xmlSer=new XmlSerializer( obj.GetType() );
MemoryStream st=new MemoryStream();
xmlSer.Serialize(st,obj);
byte[] buff=st.GetBuffer();
UTF8Encoding encoding=new UTF8Encoding(false, true);
xml = encoding.GetString(buff);
st.Close();

how can i avoid these characters at the end of the serialization flow.
should I use another encoding type like ASCII or should I remove
manually the bad characters at the end.

May be my way of doing this is not the smartest. If some one has a
better way , It would be nice to share it with me.
thanks in advance.

Eric
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,577
Members
45,054
Latest member
LucyCarper

Latest Threads

Top