关于解析:部署ASP.NET应用程序时的解析器错误

Parser Error when deploy ASP.NET application

我已经完成了简单的ASP.NET Web应用程序项目,编译了它,并尝试在本地IIS上进行测试。我已经创建了虚拟目录,将其映射到物理目录,然后将所有必要的文件放在那里,包括包含所有.dll的bin文件夹在"项目设置"的"生成"部分中,输出路径为bin所以当我尝试浏览我的应用程序时,我得到了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Server Error in '/' Application.
--------------------------------------------------------------------------------

Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: Could not load type 'AmeriaTestTask.Default'.

Source Error:


Line 1:  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AmeriaTestTask.Default" %>
Line 2:  
Line 3:  <%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="ajaxToolkit" %>


Source File: /virtual/default.aspx    Line: 1

enter image description here

已经阅读过类似的问题文章,解决方法是将输出路径设置为bin,但这对于我的项目是defalut。


我知道我回答得太晚了,但这可以帮助别人,节省时间。

以下可能是其他解决方案。

Solution 1:有关为应用程序创建虚拟目录的详细说明,请参阅为应用程序创建虚拟目录。

Solution 2:应用程序的bin文件夹丢失或应用程序的dll文件丢失。有关详细说明,请参阅将应用程序文件复制到生产服务器。

Solution 3:您可能已部署到web根文件夹,但尚未更改web.config文件中的某些设置。有关详细说明,请参阅部署到Web根目录。

在我的例子中,Solution 2工作,而部署到服务器时,来自bin的一些DLL's目录没有成功上载到服务器。我重新上传了所有的动态链接库,它工作了!!

下面是解决ASP.NET分析器错误的引用链接。


有时,如果你:

  • 清洁溶液/构建或,
  • 重新生成解决方案/生成。
  • 如果在这之后突然发生,并且您的代码有构建时错误,那么首先尝试修复这些错误。

    当构建解决方案时,会创建DLL文件并将其存储在项目bin文件夹中。如果在生成期间代码中有错误,则不会正确创建dll文件,这会导致错误。

    "快速修复"是修复所有错误或将其注释掉(如果它们不会影响其他网页),然后重新生成项目/解决方案。

    如果这不起作用,请尝试更改:codebehind="布拉布拉赫布拉赫.aspx.cs"

    到:codefile="blahblahblahblah.aspx.cs"

    注意:将"blahblahblah"更改为页面实名。


    我也有同样的问题……做了5到6个小时的研究。简单的解决方案似乎有效。我只需要将文件夹从IIS转换为应用程序。它工作得很好。(这是一个场景,我从Server2003迁移到了Server2008 R2)

    (1)打开IIS,选择需要转换的网站和相应文件夹。右键单击并选择"转换为应用程序"。就在这里…http://www.windowstechinfo.com/2014/09/solved-an-error-occurred-during.html


    我是这样解决的。

    转到您的项目文件,比如project/name/bin,然后删除bin文件夹中的所有内容。(这将给您另一个错误,您可以用这种方法解决它)

    然后在Visual Studio中,右键单击项目的引用文件夹,打开Nuget包管理器。

    转到浏览并安装"DotNetCompilerPlatform"。


    尝试将CodeBehind="Default.aspx.cs"改为CodeFile="Default.aspx.cs"


    我已经解决了这个问题。解决方案是不手动创建虚拟目录,然后在此处复制应用程序文件,而是使用"添加应用程序…"选项。以下是帮助我的帖子:http://social.msdn.microsoft.com/forums/en-us/winformsetup/thread/7ad2acb0-42ca-4ee8-9161-681689b60dda/


    当我在其中一个ashx文件中遇到编程错误时,也遇到了同样的错误:它是通过复制另一个文件创建的,并且在code behind语句中继承了它的类名。当所有aspx和ashx文件都在本地的IIS Express中运行时没有错误,但是一旦部署到服务器上,它们就停止工作(全部停止工作)。

    一旦我发现了一个ashx页面并修复了类名以反映它自己的类名,所有的aspx和ashx文件在IIS中都开始正常工作。


    有趣的是所有不同的场景。

    在我的例子中……我把我的站点上传到了godaddy,并得到了解析器错误。

    我通过在web.config中的system.codedom下评论compilers来解决这个问题。还添加了一个用于发布的自定义配置文件,该配置文件将在发布期间预编译。

    1
    2
    3
    4
    5
    6
    7
      <system.codedom>
        <!--GoDaddy does not compile!-->
        <!--<compilers>
          <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
          <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
        </compilers>-->
      </system.codedom>

    在我的例子中,我错过了.csproj文件中的compile标记。

    1
    2
    3
    4
    <Compile Include="Global.asax.cs">
      <DependentUpon>Global.asax</DependentUpon>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Compile>

    在我的例子中,有新的代码分支,旧的代码分支部署在本地的IIS中。所以它指向了不可用的旧分支代码。所以我用新的分支将我的代码部署到了IIS,现在它正在工作。


    IIS 7或IIS 8或8.5版本-如果要从2003迁移到2012/2008,请确保Web服务位于应用程序类型而不是虚拟目录中


    我来不及了,但让我解释一下我是如何解决这个问题的。

    这个问题主要是因为文件夹/解决方案结构不正确。

    出现此问题的原因可能是1。如果您已从其他位置复制了项目并尝试运行该项目。

    所以要解决这个问题,请转到原始位置,再次交叉检查文件夹和文件。

    这对我有用。


    当debug和release文件夹中的文件没有正确创建时就会发生这种情况(它们的引用错误或被多次覆盖)。我也面临着同样的问题,在这个问题上,当我们构建解决方案时,我的一切都很好,但是当我发布网站时,它给了我同样的错误。我通过以下方式解决了这个问题:

  • 转到Visual Studio中的解决方案资源管理器,单击"显示隐藏文件"(如果没有显示!)
  • 你会找到一个名为obj的文件夹,打开它。
  • 这里还有两个文件夹,分别命名为debug和release。现在,从这两个文件夹中删除内容,确保不删除调试和发布文件夹。只删除debug and release文件夹中的文件和文件夹。
  • 现在建立并发布你的解决方案,一切都将像魅力一样工作。