我在浏览器中查看我的ASP.NET页面时在运行时收到错误。我没有得到任何构建错误但是我在运行时遇到以下编译器错误:
编译错误
描述:在编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并相应地修改源代码。
Compiler Error Message: CS1513: } expected
Source Error:
Line 329: #line hidden
Line 330: __output.Write("\r\n\t\t\t</div>\r\n\t\t");
Line 331: }
Line 332:
Line 333: private System.Web.UI.Control __BuildControl__control7() {
Source File: c:\Windows\Microsoft.NET\Framework\v1.1.4322\
Temporary ASP.NET Files\xxxxxxxx\450ffa78\d46d847d\
k1gsz9dj.0.cs Line: 331
我在源代码中找不到任何遗漏},并且此错误发生在Temporary ASP.NET Files目录中存在的生成的代码文件中。如何将此跟踪到我的页面中实际格式错误的代码行或页面上的用户控件?
如果错误代码如下:
变量名称与保留字相同,则可以重命名变量。
代码段如:
@model MyModel
{
var appname = @Model.Apps.FirstOrDefault(x => x.ID == Model.SelectedApp);
}
之前删除'@' Model.Apps.FirstOrDefault(x => x.ID == Model.SelectedApp)
代码段或部分用法,例如:
@section{
<!-- hiiii it's not about an error -->
}
从章节中的评论中删除撇号。
如果不是这些特定情况,您可以尝试通过应用源减少来查找生成错误的位置。删除/剪切/注释掉代码片段,直到您可以可靠地关闭和打开错误。如果不是上述情况之一,那么打开错误的代码可能是罪魁祸首。
查看标记(aspx或ascx)中的块,例如:
<% ... some C# code.... { %>
markup(controls, html etc)
<% } %>
任何打开的支架 {
需要用另一个括号关闭 }
。
这些页面或控件在首次请求时由ASP .Net编译一次。
Visual Studio无法编译 aspx or ascx
文件。
如果项目是“Web站点”类型,Visual Studio将编译 aspx/ascx
文件,但如果项目是“Web应用程序”类型,Visual Studio不会“编译”标记(它不会生成相应的类到 aspx/ascx
标记)
在我的网站上,问题是由一块看起来像这样的代码引起的:
@{
var currentNode = @linkedList.Find(@CurrentPage);
if (@currentNode.Next != null)
{
var next = @currentNode.Next;
<li>
@next.Name
</li>
}
if (@currentNode.Previous != null)
{
var prev = @currentNode.Previous;
<li>
@prev.Name
</li>
}
}
我不确定为什么问题是由嵌套造成的。这可能是编译器中的错误。
我遇到了类似的问题,只有在经过反复试验后才能找到它。
我犯的错误是在foreach循环中向变量添加一个'@',它以:
@foreach
正如错误所示,你错过了一个结束大括号'}'
看一下msdn编译器错误文档:
与MSDN上的示例一样:
// the below will cause CS1513 since namespace is missing '}'
namespace y
{
class x
{
public static void Main()
{
}
}
尝试在visual studio中编译它。我认为它还将显示具有不完整花括号的代码的确切行。
编译错误 CS1513