Подтвердить что ты не робот

Что может вызвать ошибку XML Parsing: элемент не найден?

Недавно я перенес сайт ASP с моей машины dev на живой сервер. Все страницы, кроме моей страницы часто задаваемых вопросов, работают отлично, но мой FAQ поднимает:

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

Единственные изменения, которые я сделал, это изменение строки подключения на моей странице SQL из локальной строки, указанной моей службой хостинга. Любые советы о том, что я могу сделать, чтобы найти корень этой проблемы?

вот источник моей страницы часто задаваемых вопросов:

<%@ 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>

Я нашел это на другом форуме ссылка:

Ну, похоже, это и то, и другое. Сообщение генерируется Firefox, но вызвано каркасом. По какой-то причине .NET генерирует тип ответа "application/xml" при создании пустой страницы. Firefox анализирует файл как XML и не находит корневой элемент, выплевывает сообщение об ошибке.

IE не отображает страницу, период. Вот откуда идет XML.

Вот функция constructFaqSideMenu():

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

И вот источник пустой страницы IE возвращает:

<!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>
4b9b3361

Ответ 1

Это очень старый поток, но я нашел это во время поиска по той же проблеме и хотел дать окончательный ответ любому, кто ищет это в будущем.

Я получил эту ошибку, когда было отправлено исключение, в то время как анализы страниц были проанализированы. Я обновил aspx файлы из исходного элемента управления, а разработчик, который их проверил, имел другую версию сторонней библиотеки элементов управления. В директивах на странице Assembly Assembly ссылаются версии, которых у меня не было, поэтому в этот момент было создано исключение. Я предполагаю, что эта ошибка появляется в клиенте, когда исключение создается так рано в жизненном цикле запроса страницы, что ничего не отправляется клиенту.

Мы регистрируем все исключения на уровне приложения в Global.Application_Error, поэтому я смог получить эту информацию из журналов. Мы воспользуемся последним исключением из следующего кода:

Server.GetLastError().GetBaseException()

Ответ 2

Я ничего не знаю об ASP.NET, но из моего общего опыта работы с веб-фреймворками похоже, что ваше приложение вообще ничего не выдавало. Обычно это означает, что существовало исключение до того, как произошел какой-либо вывод, поэтому попробуйте просмотреть журналы, чтобы узнать, что вызвало это...

Ответ 3

У меня была эта проблема на всех моих страницах при развертывании в IIS, оказалось, что учетная запись, запущенная в пуле приложений, не имеет достаточных привилегий для подключения и выполнения запросов к базе данных

Ответ 4

нет объявления xml в начале

<? xml version = "1.0"? >

Ответ 5

Возможно, некоторые проблемы с кодировкой, поврежденные "unicode sequence" в начале вашего файла или что-то в этом роде?

Ответ 6

Может быть, нет XML (XML - пустая строка)?

Ответ 7

Сайт разработан в ASP.NET, а не в XML. Имеет ли это какое-либо отношение к проблеме?

Ответ 8

Для меня возникла такая же ошибка, и решение этой ошибки - это первый открытый диспетчер iis, а затем в диспетчере iis под именем вашего сервера дважды щелкните расширение веб-службы и в этом случае, если ваши активные серверные страницы "запрещены", измените его на "разрешить", и теперь ваша страница asp будет запущена.

Ответ 9

Если вы вызываете .vb или .cs script с страницы .aspx и получаете эту ошибку, добавьте следующий код на страницу .aspx. По-видимому, FireFox нуждается в некотором видимости действительной маркировки. Это сработало для меня.

<html>
<body></body>
</html>

Ответ 10

У меня была такая же проблема. Это было вызвано тем, что я обрабатывал исключения в global.asax и называл Server.ClearError(), не вызывая Response.Redirect или подобное. Я думаю, что код не удался, и ошибка была удалена, поэтому asp.net не смог отобразить ошибку и не смог отобразить запрошенную страницу.

Я также получил эту ошибку, потому что я переопределил метод рендеринга страницы и забыл вызвать base.render(writer), тем самым отправив пустую страницу в браузер.

Ответ 11

Я нашел эту проблему, потому что URL-адрес перенаправлялся в другое место. Исправление, которое разрешило проблему.

Он перенаправлялся на http://localhost/forms/abc.aspx, однако он должен был быть перенаправлен на http://localhost/projectname/forms/abc.aspx

Ответ 12

Это может быть две причины. Один из них может иметь один или несколько незакрытых тегов HTML, или вы, возможно, не задали тип контента для нашего ответа. Подробнее читайте http://chiragrdarji.wordpress.com/2010/02/17/xml-parsing-error-no-element-found/.

Ответ 13

Я столкнулся с этой проблемой при установке моих сервисов на новую виртуальную машину. (т.е. на этой машине еще не было других служб WCF).

Вам необходимо установить и добавить отображение для служб WCF в IIS. Самый простой способ сделать это:

  • Запустите командную строку с повышенными правами администратора

  • В командной строке перейдите в папку C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation

  • Запустите команду ServiceModelReg.exe -i

  • Перезапустите IIS, выполнив команду iisreset

Ответ 14

Я столкнулся с той же проблемой. Мое решение может не применяться к ASP.NET, я работаю в node/express land. Моя конечная точка API не возвращала никаких данных в ответ:

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

Когда я включил что-то в ответ на данные, он решил проблему:

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