質問
その奇妙な、奇妙な状況が再び:)
検証は、XSDに対してXMLを与えられており、検証が失敗した場合に例外をスローすることをIまし機能。 (関数は、XMLコールを受信するウェブページから呼び出されている)
両方の呼び出し
if (!xmlvld.ValidXmlDoc(X, "", "https://somepathtofile.xsd"))
throw new Exception(xmlvld.ValidationError + "1");
と、検証機能は非常に単純です。
/// <summary>
/// This method validates an xml string against an xml schema.
/// </summary>
/// <param name="xml">StringReader containing xml</param>
/// <param name="schemaNamespace">XML Schema Namespace</param>
/// <param name="schemaUri">XML Schema Uri</param>
/// <returns>bool</returns>
public bool ValidXmlDoc(StringReader xml, string schemaNamespace, string schemaUri)
{
// Continue?
if (xml == null || schemaNamespace == null || schemaUri == null)
{
return false;
}
isValidXml = true;
XmlValidatingReader vr;
XmlTextReader tr;
XmlSchemaCollection schemaCol = new XmlSchemaCollection();
schemaCol.Add(schemaNamespace, schemaUri);
try
{
// Read the xml.
tr = new XmlTextReader(xml);
// Create the validator.
vr = new XmlValidatingReader(tr);
// Set the validation tyep.
vr.ValidationType = ValidationType.Auto;
// Add the schema.
if (schemaCol != null)
{
vr.Schemas.Add(schemaCol);
}
// Set the validation event handler.
vr.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
// Read the xml schema.
while (vr.Read())
{
}
vr.Close();
return isValidXml;
}
catch (Exception ex)
{
this.ValidationError = ex.Message;
return false;
}
finally
{
// Clean up...
vr = null;
tr = null;
}
}
そして、これが最後の2年間は非常によく働いていたが、最近の検証機能はfollwingメッセージを返すために始めます:
[ValidationError]Circular attribute group reference.[/ValidationError]
偽のメッセージである- どちらXSDも送付されたXMLは、私がアプリケーションプールをリサイクルし、(私は同じXMLを送信し、「ピング」プログラムをしましたもう一度同じXMLを送信、さらに場合、変更されている数秒ごとをチェック結果は)検証が合格...しばらくの間(一部は数分、数時間の間にある)。
XSDを呼び出しページと同じディレクトリに座って、サーバーにある、私はHTTP / 200レスポンスとXSDへの要求を参照してくださいログインすると、私も地元のパスにHTTPSをchangeing試してみましたが、エラーが同じ(ポインティングのままそれはXSDファイルを読み込もうとしないので、無効なアドレスに)HTTP / 404または無効なパス例外を与えます。
再び - 。それはすぐにアプリケーションプールの解決さをリサイクルするが、私は5分ごとにリサイクルすることはできません。
事前に感謝します! サイモン
解決
あなたはこの答えのようではないでしょうが、どうやらXmlValidatingReader
は、.NET 2.0で廃止されました...おそらく、このような問題の?
の提案はANを使用して検証することですXmlReader
する。そのリンクはXmlValidatingReader
からの変換にいくつかの詳細の特定を含んでヘルプファイルのバージョン2.0のためのものです。ヘルプの最近のバージョンでは、ドロップダウン上部のから入手できます。
についての詳細を示しますにこのリンクXmlValidatingReader
は廃止されます。
XmlReader
の使用例は、こちら。