【问题标题】:ASP.NET how to resolve CS1513: } expected error on pageASP.NET 如何解决 CS1513: } 页面上的预期错误
【发布时间】:2012-03-13 11:54:34
【问题描述】:

在浏览器中查看我的 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 文件目录中存在的生成代码文件中。如何将此追踪到我的页面或页面上的用户控件中实际格式错误的代码行?

【问题讨论】:

  • 您是否尝试在指定的文件夹中查找该 .cs 文件?
  • 它在我的服务器上,我无权访问服务器。
  • 它清楚地表明“}”在这些行中缺少检查...
  • 我在一个 aspx 页面中调用了不同的用户控件。我不能简单地找到这条线。这就是为什么我要问第 333 行是哪个用户控件的一部分?我怎么知道?
  • 那是 .NET 动态生成的文件,所以不要再暗示它说你需要找到哪一行,因为它在源代码中不存在。

标签: asp.net compiler-errors viewengine generated-code


【解决方案1】:

正如错误提示的那样,您缺少一个右花括号'}'

查看 msdn 编译器错误文档:

如 MSDN 上的示例:

// the below will cause CS1513 since namespace is missing '}'
namespace y    
{
   class x
   {
      public static void Main()
      {
      }
   }

【讨论】:

  • 但它不应该让事情在那个时候编译,以显示临时文件文件夹中的文件
【解决方案2】:

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

编译错误cs1513

【讨论】:

    【解决方案3】:

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

    <% ... some C# code.... { %>
    
       markup(controls, html etc)
    
    <% } %>
    

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

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

    【讨论】:

    • 根据我的经验它编译 aspx,但我相信你在 ascx 中是对的
    【解决方案4】:

    如果错误码相关如下:

    一个与保留字相同的变量名,然后你可以重命名变量。

    一段代码如:

    @model MyModel
    {
        var appname = @Model.Apps.FirstOrDefault(x => x.ID == Model.SelectedApp);
    }
    

    删除Model.Apps.FirstOrDefault(x =&gt; x.ID == Model.SelectedApp)之前的'@'

    代码段或部分用法,例如:

    @section{ 
        <!-- hiiii it's not about an error -->
    }
    

    删除部分评论中的撇号。

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

    【讨论】:

    • 今天遇到这个,我的情况是#2,我在代码段中有@Model.。从 Razor 2 开始,带有 HTML 注释和撇号的最后一个示例似乎已由 razor 生成器修复。我无法重现这是一个错误。
    【解决方案5】:

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

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

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

    【讨论】:

    • 我相信您的错误是 var next = @currentNode.Next; 和 var prev = @currentNode.Previous; 两者都在代码段内。我相信剃须刀生成器会想要var next = currentNode.Next; 请注意此行中缺少@。
    【解决方案6】:

    我遇到了类似的问题,经过反复试验后才发现它。

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

    @foreach
    

    【讨论】:

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