出于某种原因,我在尝试在计算机上测试代码页时遇到此错误。
它可能与错误的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";
}
}
答案 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框架版本。