asp.net – 可能导致XML解析错误:没有找到元素?

前端之家收集整理的这篇文章主要介绍了asp.net – 可能导致XML解析错误:没有找到元素?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近将ASP网站从我的开发机器迁移到实时服务器.除了我的常见问题页面之外的所有页面都可以正常工作,但是我的常见问题解答提出:
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}",_
                                                 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>

我在另一个论坛上发现了这个link

Well,it appears it’s a bit of both. The message is generated by Firefox,but caused by the framework. For some reason,.NET generates a response type of “application/xml” when it creates an empty page. Firefox parses the file as XML and finding no root element,spits out the error message.

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}",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>

解决方法

这是一个非常老的线程,但是我发现这是同样的问题,而想要为将来搜索这个的任何人提供一个确定的答案.

页面指令被解析时抛出异常时,我收到此错误.我从源代码控制更新了aspx文件,检查它们的开发人员有不同版本的第三方控件库.注册组件页面指令引用了我没有的版本,因此在此时抛出了异常.我假设在客户端中出现异常时,如果在页面请求生命周期中尽早抛出异常,那么根本就不会向客户端发送异常.

我们正在Global.Application_Error中的应用程序级别记录所有异常,因此我可以从日志中获取此信息.我们使用以下代码获取最后一个异常:

Server.GetLastError().GetBaseException()

猜你在找的asp.Net相关文章