XML Web Service fails with System.InvalidOperationException returning a DataSet with RowErrors

C

Curly

QuickStart app "Update.EXE"
(installed to C:\Program Files\Microsoft Visual Studio .NET
2003\SDK\v1.1\QuickStart\winforms\samples\data\update\cs)

....fails with the following error message when row 4
(key/customer ID "LETSS") or row 12 (key/customer ID "TRAIH") is
modified and saved.

This exception should not be raised.

Instead, the DataSet should be returned to the calling client
program so that it can report the RowErrors to the user.
(lines 392 thru 404 of UpdateForm.cs)

These rows contain apostrophes (') in the CompanyName column and
the Web Service UpdateCustomers.asmx contains code that
validates the columns checks for invalid characters using
Acme.InputValidator.IsSafeText()
The web service sets row.RowError and calls row.SetColumnError()
(lines 116 and 117 of UpdateCustomers.asmx.cs)

When these RowErrors are returned to the calling client, an
unexpected exception is raised as below:

"System.InvalidOperationException: There is an error in XML
document (1, 2556). ---> System.NullReferenceException: Object
reference not set to an instance of an object.\r\n at
System.Xml.Serialization.XmlSerializationReader.UnknownNode(XmlNo
de unknownNode, Object o)\r\n at
System.Xml.Serialization.XmlSerializationReader.UnknownNode(Objec
t o)\r\n at
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationRea
der1 .Read3_SaveResponse()\r\n --- End of inner exception
stack trace -- -\r\n at
System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader
xmlReader, String encodingStyle)\r\n at
System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader
xmlReader)\r\n at
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse
(Soa pClientMessage message, WebResponse response, Stream
responseStream, Boolean asyncCall)\r\n at
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(Strin
g methodName, Object[] parameters)\r\n at
Microsoft.Samples.Windows.Forms.Cs.Update.localhost.UpdateCustome
rs.S ave(DataSet customersDataSet) in C:\\Program
Files\\Microsoft Visual Studio .NET
2003\\SDK\\v1.1\\QuickStart\\winforms\\samples\\data\\update\\cs\
\Cli ent\\Web References\\localhost\\UpdateCustomers.cs:line
31\r\n at
Microsoft.Samples.Windows.Forms.Cs.Update.UpdateForm.SaveData()
in c:\\program files\\microsoft visual studio .net
2003\\sdk\\v1.1\\quickstart\\winforms\\samples\\data\\update\\cs\
\cli ent\\updateform.cs:line 211\r\n at
Microsoft.Samples.Windows.Forms.Cs.Update.UpdateForm.buttonSave_C
lick (Object sender, EventArgs e) in c:\\program
files\\microsoft visual studio .net
2003\\sdk\\v1.1\\quickstart\\winforms\\samples\\data\\update\\cs\
\cli ent\\updateform.cs:line 389"

To reproduce this:
- Open solution "Update.sln" in the QuickStart... directory (see
"installed to" directory above)
- F5 (Start)
- Click ">" (next) on the VCR until CustomerID "LETSS",
CompanyName "Let's Stop N Shop" is displayed
* Add a single SPACE to the end of any field.
- Press "Save" button.

-- Mark
Visual Studio .NET 2003 version 7.1.3088
Microsoft .NET Framework 1.1 version 1.1.4322
Windows 2000 Server 5.00.2195 SP4 253,424KB RAM
 

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,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top