【问题标题】:ASP.NET invalid element name StartTag errorASP.NET 无效元素名称 StartTag 错误
【发布时间】:2010-09-11 03:34:36
【问题描述】:

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

这可能与错误的 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";
    }

}

【问题讨论】:

    标签: asp.net


    【解决方案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";
    

    【讨论】:

      【解决方案2】:

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

      来自链接:

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

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

      【讨论】:

      • 谢谢,这也有帮助,但是,我仍然遇到问题! :) 不过我正在解决。
      【解决方案3】:

      主要问题是您的Tree 类无权访问Output,因为该属性属于不同的对象Default.aspx。您需要从Default.aspx 而不是Tree 调用Output.Text。另外,我认为 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。接下来,您不能像tree1.height 那样让类Tree 引用自身,因此将其更改为this.height 或者最好只是height。另外,删除feet,因为您还没有在任何地方定义它。请注意,您在此方法中也有一个 。最后取出feet右边最后一个"。编辑如下:

      在您的 Test 课程中

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

      您可以保持其他所有内容不变,但就个人而言,我会将 &lt;script runat="server"&gt; 块移动到 &lt;%@ Page Language="C#" %&gt; 下方

      另外,我认为你的逻辑有错误,但我相信一旦你克服了这些问题,你就能解决这个问题。

      (我从我的 VS 2008 IDE 运行它)

      【讨论】:

      • 谢谢,我的逻辑中的错误是什么意思?你的意思是我设置超级简单“程序”的方式吗?
      • @BOSS:我的意思是当我运行它时,输出不是你想要的,因为你的Message() 方法仍然关闭。请参阅我的更新以获取解决方案。
      • @BOSS,就设置这个程序而言,我认为大多数 ASP.NET 程序员更喜欢使用“代码隐藏”页面类型,因此您的方法位于一个名为 Default.aspx.cs 的单独文件中跨度>
      【解决方案4】:

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

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

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

      另外,如果您的 IIS 中有多个网站,请注意以下几点:

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

      发件人:Running "aspnet_regiis -i" Not Always The Best Choice

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多