it-swarm.com.de

Was kann einen XML-Parsing-Fehler verursachen: Kein Element gefunden?

Ich habe kürzlich eine ASP Site von meinem Entwicklungscomputer auf einen Live-Server migriert. Alle Seiten außer meiner FAQ Seite funktionieren einwandfrei, aber meine FAQ zeigt Folgendes:

XML Parsing Error: no element found
Location: http://geniusupdate.com/GSHelp/faq.aspx
Line Number 1, Column 1:

Die einzigen Änderungen, die ich vorgenommen habe, waren das Ändern der Verbindungszeichenfolge auf meiner SQL-Seite von lokal in die von meinem Hosting-Service angegebene Zeichenfolge. Gibt es Tipps, wie ich die Wurzel dieses Problems finden kann?

hier ist die Quelle zu meiner FAQ Seite:

<%@ Page Language="VB" MasterPageFile="~/theMaster.master" AutoEventWireup="false" CodeFile="faq.aspx.vb" Inherits="faq" Title="Untitled Page" %>
<%@ Import Namespace="sqlstuff" %>
<%@ Import Namespace="functions" %>

<asp:Content ContentPlaceHolderID="page_title" ID="theTitle" runat="server">
    FAQ</asp:Content>
<asp:Content ContentPlaceHolderID="column1_title" ID="col1Title" runat="server">
    <%=faqPageTitle(Request.QueryString("cid"))%></asp:Content>
<asp:Content ContentPlaceHolderID="column1" ID="columnContent" runat="server">

     <p>Click on a question to expand it to see the answer!</p>
     <p><%  If cID >= 0 Then
                Dim theFaq As New List(Of faqContent), iterate As Integer = 0
                theFaq = sqlStuff.getFaqs(cID)
                For Each oFaq As faqContent In theFaq
                    Response.Output.WriteLine("<h4 id={0} class={1}>Q: {2}</h4>", _
                                                 addQuotes("gsSwitch{0}-title", iterate), _
                                                 addQuotes("handCursor"), _
                                                 oFaq.Content.Question)
                    Response.Output.WriteLine("<div id={0} class={1}><string>A: </strong>{2}</div>", _
                                                 addQuotes("gsSwitch{0}", iterate), _
                                                 addQuotes("gsSwitch"), _
                                                 oFaq.Content.Answer)

                    iterate += 1
                Next
            Else
                Response.Output.Write("Here you can find a lot of information about eTHOMAS and how to expedite your office tasks.{0}", ControlChars.NewLine)
            End If
    %></p>
    <script type="text/javascript">
        var gsContent = new switchcontent("gsSwitch", "div")
        var eID = '<%= expandID %>'
        gsContent.collapsePrevious(true) // TRUE: only 1; FALSE: any number
        gsContent.setPersist(false)
        if(eID >= 0){
            gsContent.defaultExpanded(eID) // opens the searched FAQ
            document.getElementById('gsSwitch' + eID + '-title').scrollIntoView(true) // scrolls to selected FAQ
        }        
        gsContent.init()
    </script>
</asp:Content>
<asp:Content ContentPlaceHolderID="subcolumn_right_title" ID="rSideColTitle" runat="server"></asp:Content>
<asp:Content ContentPlaceHolderID="subcolumn_right" ID="rSideColContent" runat="server"></asp:Content>
<asp:Content ContentPlaceHolderID="subcolumn_left_title" ID="lSideColTitle" runat="server"></asp:Content>
<asp:Content ContentPlaceHolderID="subcolumn_left" ID="lSideColContent" runat="server"></asp:Content>
<asp:Content ContentPlaceHolderID="sidecolumn_title" ID="sideColtitle" runat="server">
</asp:Content>
<asp:Content ContentPlaceHolderID="sidecolumn" ID="sideCol" runat="server">
    <%  If cID >= 0 Then
            Response.Write(constructFaqSideMenu(CInt(Request.QueryString("cid"))))
        Else
            Response.Write(constructFaqSideMenu())
        End If
    %>
</asp:Content>

Ich habe dies in einem anderen Forum gefunden link :

Nun, es scheint ein bisschen von beidem zu sein. Die Nachricht wird von Firefox generiert, jedoch vom Framework verursacht. Aus irgendeinem Grund generiert .NET beim Erstellen einer leeren Seite den Antworttyp "application/xml". Firefox analysiert die Datei als XML und gibt die Fehlermeldung aus, wenn kein Root-Element gefunden wird.

IE rendert die Seite nicht, Punkt. Hier kommt das XML her.

Hier ist die constructFaqSideMenu () -Funktion:

Public Shared Function constructFaqSideMenu(ByVal oSelID As Integer) As String
    Dim oCatList As New List(Of faqCategory)
    Dim oRet As New StringBuilder
    Dim iterate As Integer = 1, extraTag As String = ""

    oCatList = sqlStuff.getFaqCats

    oRet.AppendFormattedLine("<ul id={0}>", addQuotes("submenu"))
    oRet.AppendFormattedLine("    <li id={0}>FAQ Categories</li>", addQuotes("title"))
    For Each category As faqCategory In oCatList
        If iterate = oSelID Then
            extraTag = String.Format(" id={0}", addQuotes("active"))
        Else
            extraTag = ""
        End If
        oRet.AppendFormattedLine("    <li{0}><a href={1}>{2}</a></li>", extraTag, addQuotes("faq.aspx?cid={0}", iterate), StrConv(category.Title,         VbStrConv.ProperCase))
        iterate += 1
    Next
    oRet.AppendLine("</ul>")

    Return oRet.ToString
End Function

Und hier ist die Quelle der leeren Seite, die IE zurückgibt:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
<BODY></BODY></HTML>
18
Anders

Dies ist ein sehr alter Thread, aber ich habe dies beim googeln für das gleiche Problem gefunden und wollte eine endgültige Antwort für alle anderen geben, die in der Zukunft danach suchen.

Ich habe diesen Fehler erhalten, als eine Ausnahme ausgelöst wurde, während die Seitenanweisungen analysiert wurden. Ich habe aspx-Dateien von der Quellcodeverwaltung aus aktualisiert, und der Entwickler, der sie eincheckte, hatte eine andere Version einer Drittanbieter-Bibliothek mit Steuerelementen. In den Direktiven für die Registerassembly-Seite wurde auf eine Version verwiesen, die ich nicht hatte. Daher wurde die Ausnahme zu diesem Zeitpunkt ausgelöst. Ich gehe davon aus, dass dieser Fehler im Client auftaucht, wenn eine Ausnahme so früh im Lebenszyklus der Seitenanforderung ausgelöst wird, dass überhaupt nichts an den Client gesendet wird.

Wir protokollieren alle Ausnahmen auf App-Ebene in Global.Application_Error, sodass ich diese Informationen aus den Protokollen erhalten konnte. Wir nehmen die letzte Ausnahme mit dem folgenden Code:

Server.GetLastError().GetBaseException()
16
Rich

Ich weiß nichts über ASP.NET, aber aufgrund meiner generischen Erfahrung mit Web-Frameworks klingt das so, als hätte Ihre Anwendung überhaupt keine Ausgabe erzeugt. Normalerweise bedeutet dies, dass eine Ausnahme vor dem Rendern der Ausgabe aufgetreten ist. Versuchen Sie daher, die Protokolle zu durchsuchen, um herauszufinden, was die Ursache war.

6
ykaganovich

Ich lief dazu und fand es zumindest für mich, weil in C # WebAPI 2, wenn Sie ein leeres Ok () - Ergebnis zurückgeben, XML als Inhaltstyp zurückgegeben wird. Auch wenn Sie es in der WebAPI-Konfiguration überschreiben, um niemals XML zurückzugeben. Meine Lösung bestand also darin, diese Funktion in einer Base Controller-Klasse zu erstellen, die ich habe, und sie überall dort einzusetzen, wo ich eine leere OK () - JSON-Antwort zurückgeben muss. Man könnte es für ihre Bedürfnisse weiterentwickeln, aber das habe ich getan. Ich denke, Sie könnten vielleicht auch einen AttributeFilter verwenden, aber ich habe diese Lösung gemacht, da in Action dieselbe Menge an Code vorhanden ist. 

protected IHttpActionResult OKJSONResult()
{
    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, "", new MediaTypeHeaderValue("application/json"));
    return ResponseMessage(response);
}
4
kyleb

Bei der Bereitstellung auf IIS hatte ich dieses Problem auf allen meinen Seiten. Die Lösung stellte sich heraus, dass das Konto, unter dem der App-Pool ausgeführt wurde, nicht über ausreichende Berechtigungen zum Herstellen einer Verbindung und zum Ausführen von Datenbankabfragen verfügte

2
Daniel Powell

Ich stand vor demselben Problem. Meine Lösung trifft möglicherweise nicht auf ASP.NET zu, ich arbeite in Node/Express Land. Mein API-Endpunkt hat keine Daten in der Antwort zurückgegeben:

return res.status(200).end();

Wenn ich etwas in die Datenantwort aufgenommen habe, wurde das Problem behoben:

return res.status(200).send('ok').end();
1
Bwyss

Ich hatte das gleiche Problem. Ursache war, dass ich Ausnahmen in global.asax behandelte und Server.ClearError () aufrief, ohne eine Response.Redirect oder ähnliches aufzurufen. Ich vermute, dass der Code fehlgeschlagen ist und der Fehler beseitigt wurde, so dass asp.net weder eine Fehlermeldung noch die angeforderte Seite anzeigen konnte.

Ich habe diesen Fehler auch erhalten, weil ich die Render-Methode der Seite überschrieben und vergessen habe, base.render (Writer) aufzurufen, wodurch eine leere Seite an den Browser gesendet wird.

1
user334246

Ich habe dieses Problem gefunden, da die URL an einen anderen Speicherort umgeleitet wurde. Korrigiert wurde das Problem behoben.

Es wurde zu http://localhost/forms/abc.aspx umgeleitet, es hätte jedoch zu http://localhost/projectname/forms/abc.aspx weitergeleitet werden sollen.

1

Wenn Sie ein .vb- oder .cs-Skript von einer ASPX-Seite aus aufrufen und diese Fehlermeldung erhalten, fügen Sie der ASPX-Seite den folgenden Code hinzu. FireFox muss anscheinend eine gewisse Gültigkeit haben. Das hat für mich funktioniert.

<html>
<body></body>
</html>
1
mmcglynn

keine XML-Deklaration am Anfang

<? xml version = "1.0"?>

1
Chris Ballance

Möglicherweise Probleme mit der Codierung, beschädigte "Unicode-Sequenz" am Anfang Ihrer Datei oder etwas ähnliches?

1
axk

hey derselbe Fehler ist bei mir aufgetreten und die Lösung für diesen Fehler ist zuerst geöffnet iis manager und dann im iis manager unter Ihrem Servernamen doppelklicken Sie auf die Webdiensterweiterung. Wenn Ihre aktiven Serverseiten "verboten" sind, ändern Sie sie in "zulassen". und jetzt wird deine asp-Seite ausgeführt.

1
subramanian

Dieses Problem ist bei der Installation meiner Dienste auf einer neuen virtuellen Maschine aufgetreten. (dh auf diesem Rechner wurden noch keine anderen WCF-Dienste ausgeführt.)

Sie müssen ein Mapping für WCF Services in IIS installieren und hinzufügen. Der einfachste Weg, dies zu tun, ist wie folgt:

  1. Führen Sie eine Eingabeaufforderung mit erhöhten Administratorrechten aus

  2. Navigieren Sie in der Eingabeaufforderung zu C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation 

  3. Führen Sie den Befehl ServiceModelReg.exe -i aus. 

  4. Starten Sie IIS neu, indem Sie den Befehl iisreset ausführen.

0
Jason Marsell

Dafür kann es zwei Gründe geben. Möglicherweise verfügen Sie über ein oder mehrere nicht geschlossene HTML-Tags oder haben keinen Inhaltstyp für unsere Antwort festgelegt. Lesen Sie http://chiragrdarji.wordpress.com/2010/02/17/xml-parsing-error-no-element-found/ für weitere Details.

0
Chirag Darji

Vielleicht gibt es kein XML (XML ist eine leere Zeichenfolge)?

0
shahkalpesh

Die Site wird in ASP.NET und nicht in XML entwickelt. Hat das einen Einfluss auf das Problem?

0
Anders