Validación de Mensajes

Servicio Web Que Valida Mensajes Entrantes de Acuerdo con un Esquema

Para validar los mensajes en el servicio usamos XmlValidatingReader. El mejor lugar para hacerlo es en una extensión SOAP. Ésto nos da un control completo sobre los contenidos del mensaje SOAP y nos permite descartar mensajes que no cumplen con el esquema antes del paso de deserialización, relativamente costoso.

Observar que este ejemplo valida los mensajes en el cuerpo del WebMethod. Esto se ha hecho por simplicidad. Los pasos para validar un mensaje son los mismos independientemente del lugar. Para más información sobre la validación en extensiones SOAP, acudid a MSDN article.

//create the validating reader
XmlTextReader tr = new XmlTextReader(input, XmlNodeType.Document, null);
XmlValidatingReader vr = new XmlValidatingReader(tr);

//add the schema and set the validation type to schema
XmlSchemaCollection schemas = new XmlSchemaCollection();
schemas.Add("Microsoft.Samples.Web.Services", "insert location here...");
vr.Schemas.Add(schemas);
vr.ValidationType = ValidationType.Schema;

//add our event callback function to the event handler in case there is a validation error
vr.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);

try
{
//if there is an error we will fall out of this while loop and our callback function will be called
while (vr.Read())
{
//do nothing
}
}
catch (Exception exception)
{
//an exception will be thrown if there are non-validation errors, e.g. in the case of malformed XML
}
Ejecutar el ejemplo C#