質問

その奇妙な、奇妙な状況が再び:)

検証は、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の使用例は、こちら

であります
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top