如何解决SharePoint中的“服务器标记格式不正确”错误?

4
我正在尝试编辑一个传统的wss3 sharepoint网站。在处理一个700+代码行的aspx页面时,我在sharepoint上得到了一个"The server tag is not well formed."的错误,并且"?content=1"的技巧不起作用。
有人知道如何找到引起问题的那一行吗?我希望能够像aspnet ysod一样得到一些提示,至少这是有用的。
如果值得一提的话,我可以访问实际的服务器。
更新:我知道错误是因为我搞砸了标记,正如ArenB所指出的那样。我想要知道的是,在这700行中哪里出错了的提示。
更新2:我找到了一个解决方法并将其发布为答案,但问题仍然开放,等待有人给出更详细的错误消息的答案。
4个回答

7

在 Visual Studio 的页面上按下 ctrl+k,d 键可以大概定位到错误的位置。这个快捷键会尝试为 aspx 页面格式化,如果无法格式化,则指出问题所在的行及原因。


1
OMG,Ctrl+K+D 真是救了我一命,不然我就要花几个小时来找这个错误了。原来是两个双引号连在一起。非常感谢! - spacemonkey

5

感谢 @Aren 的回答,我解决了我的问题。我的 XML 文件没问题,几乎没有问题。你不能在双引号中使用 "...",必须改为单引号 '

我曾写过:

<asp:Repeater ID="LeadersBlock" runat="server" Visible="false">
    <ItemTemplate>
        <asp:Literal Text="<%# Eval("Employee") %>" />
    </ItemTemplate>
</asp:Repeater>

改为:

<asp:Repeater ID="LeadersBlock" runat="server" Visible="false">
    <ItemTemplate>
        <asp:Literal Text='<%# Eval("Employee") %>' />
    </ItemTemplate>
</asp:Repeater>

我希望这篇文章可以节省其他人的时间。


1
在我的情况下,属性之间缺少空格,但错误消息相同 ID="TextField"runat="server" - sairfan

3
“Server Tag is not well formed”意味着你的标签有问题,例如:
<asp:Label id="myLabel" runat="server"
    Stuff!
</asp:Label>

注意标签上半部分缺失的>符号

另一种可能是你本来想写一个闭合的标签<tag />,但是忘了加上/符号,在标签结束时缺失了一个结束标签。


  • 如何定位出错的行数?使用差异比较工具(diff mechanism)查看修改过的行并尝试找到错误的标签。
  • 或者你可以在代码中运行一个xml验证器,不过如果使用vanilla xml验证器,asp可能会出现问题。

哦,我想我没有表达清楚,抱歉。我知道这个问题是因为我搞砸了标记。我想要的是在文件中得到一个提示,告诉我错误出现的位置,因为我编辑了很多东西。 - David Lay
这个操作在满足如下两个前提的情况下才能实现:1)我有以前的版本,2)编辑并不是很多。众所周知,Sharepoint 对源代码控制不太友好,我被这些编辑搞得有些发疯。:( - David Lay
@DavidLay 如果你有原始文件和源文件,你可以把它们导入到一个比较应用程序(WinMerge)中,这将会一边显示出差异。 - Tom

1

好的,我找到了一种手动方法,可能对某些人有用,但也不是理想的。

首先,获取aspx页面的代码并将其粘贴到另一个文件中(作为备份)。 然后,逐个删除WebPart,然后删除WebPartZones,再删除任何其他可能导致页面崩溃的服务器端标记,直到页面停止崩溃。 这样,您至少会知道错误的位置。

对于我来说,这次是一个WebPartZone,它有两个属性在一起,之间没有空格。这种错误可能非常棘手。

我再也不会在aspx sharepoint页面上进行这种疯狂的野蛮黑客行为了。


5
“我再也不会在一个aspx的SharePoint页面上进行这种疯狂的野蛮黑客攻击了。”- 这不是第一次你发现自己会这样说! - zincorp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接