12

在浏览器中查看我的 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 

我在我的源代码中找不到任何丢失的 },并且此错误发生在临时 ASP.NET 文件目录中存在的生成代码文件中。如何将其追溯到我的页面或页面上的用户控件中实际格式错误的代码行?

4

6 回答 6

16

如果错误码相关如下:

变量名称与保留字相同,然后您可以重命名变量。

一个代码段,例如:

@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 -->
}

从部分的评论中删除撇号。

如果不是这些特定情况,您可以尝试通过应用源缩减来定位错误的生成位置。删除/剪切/注释掉代码片段,直到您可以可靠地关闭和打开错误。如果不是上述情况之一,则打开错误的代码可能是罪魁祸首。

于 2013-11-13T09:05:44.207 回答
3

在标记(aspx 或 ascx)中查找以下块:

<% ... some C# code.... { %>

   markup(controls, html etc)

<% } %>

任何打开的括号{都需要用另一个括号关闭}

这些页面或控件在第一次被请求时由 ASP .Net 编译一次。 Visual Studio 不编译aspx or ascx文件。
如果项目是“网站”类型,Visual Studio 会编译aspx/ascx文件,但如果项目是“Web 应用程序”类型,Visual Studio 不会“编译”标记(它不会为标记生成相应的类aspx/ascx

于 2012-02-23T05:42:04.577 回答
0

在我的网站上,问题是由如下所示的代码块引起的:

            @{  
                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>
                }
            }

我不确定为什么问题是由嵌套引起的。这可能是编译器中的错误。

于 2014-08-29T08:03:35.137 回答
0

我遇到了类似的问题,并且只有在经过反复试验后才能找到它。

我犯的错误是在 foreach 循环内的变量中添加一个“@”,该循环以:

@foreach
于 2016-10-25T14:48:47.023 回答
-1

正如错误所暗示的那样,您缺少一个右大括号'}'

查看 msdn 编译器错误文档:

如 MSDN 上的示例:

// the below will cause CS1513 since namespace is missing '}'
namespace y    
{
   class x
   {
      public static void Main()
      {
      }
   }
于 2012-02-23T04:39:34.280 回答
-1

尝试在visual studio中编译它。我认为它还将显示包含不完整花括号的代码的确切行在哪里。

编译错误cs1513

于 2012-02-23T05:10:19.297 回答