ASP.NET无效元素名称StartTag错误

时间:2010-09-11 03:34:36

标签: asp.net

出于某种原因,我在尝试在计算机上测试代码页时遇到此错误。

它可能与错误的IIS安装有关,但我似乎无法找出问题所在。

我收到以下错误:

error on line 1 at column 2: StartTag: invalid element name

这是我的Default.aspx:

<%@ Page Language="C#" %>

<html>

<head>

<title>Plating Trees</title>

<script runat=”server”>
 protected void Page_Load(Object Source, EventArgs E)
 {

/* Begin C# Code!*/

Tree tree1 = new Tree();

tree1.Grow(3);

tree1.Message();

 }

</script>

</head>

<body>

<p><asp:label runat=”server” id=”Output” /></p>

</body>

</html>

Tree.cs:

/* A simple C# class! */

public class Tree
{

    public int height = 0;

    public void Grow(int h)
    {
        height += h;
    }

    public string Message()
    {
        Output.Text = "The height of tree1 is:<br/>” + tree1.height + feet";
    }

}

4 个答案:

答案 0 :(得分:1)

不确定这是否是导致问题的原因,但是您的属性和代码的双引号看起来不合适。

<script runat=”server”>
<p><asp:label runat=”server” id=”Output” /></p>

应该是:

<script runat="server">
<p><asp:label runat="server" id="Output" /></p>

Output.Text = "The height of tree1 is:<br/>” + tree1.height + feet";

应该是:

Output.Text = "The height of tree1 is:<br/>" + tree1.height + "feet";

答案 1 :(得分:1)

您的问题类似于StackOverflow中的上一个问题:“StartTag: invalid element name” in default.aspx,这似乎是IIS配置问题。

从链接:

  

当我进入ASP.NET选项卡时   我注意到的虚拟目录   未选择ASP.NET版本(它   是一个空的组合框)。选择   .NET框架版本做到了这一点。

看看它,它可能会解决你的问题:)

答案 2 :(得分:1)

主要问题是您的Tree类无权访问Output,因为该属性属于另一个对象Default.aspx。您需要从Output.Text而不是Default.aspx致电Tree。此外,我认为geoff对于是正确的。因此,请按如下方式修改Page_Load

在您的Default.aspx

<script runat="server">
protected void Page_Load(Object Source, EventArgs E)
{
  /* Begin C# Code!*/
  Tree tree1 = new Tree();
  tree1.Grow(3);
  Output.Text = tree1.Message();
}
</script>

Message()中,您需要删除Output.Text。接下来,您不能像Tree那样拥有类tree1.height引用,因此请将其更改为this.height或最好只height。另外,请删除feet,因为您尚未在任何位置定义它。请注意,此方法中也有。最后,取出feet右侧的最后一个。编辑如下:

Test班级

public string Message()
{
  return "The height of tree1 is:<br/>" + height;
}

您可以保持其他所有内容相同,但就个人而言,我会将<script runat="server">块移至<%@ Page Language="C#" %>

下方

另外,我认为你的逻辑存在缺陷,但我相信一旦你通过这些东西你就可以解决这个问题。

(我是从我的VS 2008 IDE中运行的)

答案 3 :(得分:0)

@BOSS,也许您需要运行aspnet_regiis工具来重新注册IIS中的ASP.NET。

进入.NET framework命令提示符并运行“aspnet_regiis -i”来执行此操作。

参考:ASP.NET IIS Registration Tool (Aspnet_regiis.exe)

另外,如果IIS中有多个网站,请注意以下事项:

  

-i标志导致aspnet_regiis   命令在每一个上执行它的工作   盒子上的网站,而不仅仅是一个   需要它。作为.NET框架   2.0开始出货将有更多的开发人员和生产服务器   运行这两个版本的框架。   使用asp运行aspnet_regiis命令   -i标志将关联所有   框架上的网站   从命令运行的地方(那里   是aspnet_regiis的一个版本   每个已安装版本的命令   .NET框架)。它也很有用   注意-i标志将重置   立即自动生成的值   对基于表单的登录和   查看状态校验和。如果你跑了   在live上使用-i标志命令   生产服务器你可能很好   中断登录的应用程序   其他应用程序的用户   同一个盒子。 “-i”的味道   命令永远不应该在a中运行   除非有生产环境   没有活跃用户登录,全部   盒子上的网站恰好在   相同的.NET框架版本。

来自:Running "aspnet_regiis -i" Not Always The Best Choice