【问题标题】:An error occurs while loading my ASP.NET application after it is configured for IIS在为 IIS 配置后加载我的 ASP.NET 应用程序时发生错误
【发布时间】:2016-04-21 17:41:38
【问题描述】:

我将 ASP.NET Web 应用程序更改为使用本地 IIS,而不是 IIS Express。现在重新打开解决方案后,在加载应用程序时出现以下错误:

错误:无法打开项目“Atlas2”,因为无法创建 Visual C# 2015 编译器。 “Atlas2”已经是工作区的一部分。

错误:无法打开项目“Atlas2”,因为 Visual C# 无法创建 2015 编译器。具有相同密钥的项目具有 已经添加了。

有人可以帮我重新加载项目吗? 如果有帮助,我正在使用 Visual Studio Team Services(以前是 TFS Online)。

【问题讨论】:

  • 您是否在 Visual Studio 中以管理员权限打开解决方案?以管理员模式运行visual studio并检查它是否有效?
  • 即使在管理员模式下运行 VS 时也会出现此错误。

标签: asp.net iis azure-devops iis-express


【解决方案1】:

我解决了我的问题。我卸载了项目并编辑了 .csproj 文件。我做了以下更改:

  • <UseIISExpress>false</UseIISExpress> 为真
  • 删除<UseIIS>True</UseIIS>
  • 删除<IISUrl>http://localhost/MyWebApp</IISUrl>

然后我重新加载了项目。有效。实际上它回滚到使用 IIS Express。

【讨论】:

  • 进行这些更改对我来说还不够。进行更改后,我还必须重新启动 Visual Studio。
  • 另外一点要补充:就我而言,我从源代码管理重新下载了整个解决方案。编辑文件时,我注意到端口设置错误。以我为例 30339localhost:30339/</IISUrl> 在 IIS 中,端口设置为 3434。当我将 30339 更改为 3434 时,我可以再次加载项目。
【解决方案2】:

同样的问题发生在我的系统上,通过在管理员模式下运行 Visual Studio 得到了解决。问题是 IIS 与 ASP.NET 项目具有相同的主机+端口名称,并且没有管理员权限,Visual Studio 无法添加网站。

【讨论】:

  • 我没有高兴地尝试了上面的解决方案,然后恢复并尝试了这个解决方案,它第一次奏效。谢谢你:)
  • 这让我在 Windows 10 在安全更新后重新启动并重新打开每个打开的程序时得到了我。当然它不会在管理员模式下打开 Visual Studio,所以我得到了错误。
【解决方案3】:

在使用 Visual Studio 2015 从 IIS Express 切换到完整 IIS 后,我遇到了这个错误。 当我以管理员身份运行 Visual Studio 时,我能够加载项目。

【讨论】:

    【解决方案4】:

    我在 VS 2015 中遇到了类似的错误。

    "无法打开,因为无法打开 Visual c# 2015 编译器 已创建。" "已添加相同的密钥"

    我能够通过在 Visual Studio 2013 中打开解决方案、清理解决方案、关闭 Visual Studio,然后在 Visual Studio 2015 中打开相同的解决方案来解决此问题。

    我还注意到,在执行完这一系列事件后,最初给出此错误的项目的 csproj 文件更新了其 ProjectExtensions 元素并设置了&lt;UseIIS&gt;False&lt;/UseIIS&gt;

    下图显示了发生错误时和解决方法后 csproj 之间的差异。

    请记住,在使用此解决方法之前,我尝试手动更新该元素并将其设置为 false,但这不起作用。

    【讨论】:

    • 我还注意到,通过确保我的本地 IIS 服务器有一个绑定到端口 80 的站点,我能够解决相同的问题。看起来 VS 实际上确保 IIS 在 @已请求 987654322@。
    • 除此之外,我不得不删除 projectName.csproj.user 文件才能真正生效。
    【解决方案5】:

    问题是应用程序已配置为使用本地 IIS 而不是 Express,它们可能是您无法加载应用程序的两个问题。

    问题 1. 您的本地系统中没有安装 IIS,在这种情况下,您必须安装 IIS 或必须打开 .csproj 文件并执行变化:

      <UseIISExpress>false</UseIISExpress> to true
      Remove <UseIIS>True</UseIIS>
      Remove <IISUrl>http://localhost</IISUrl>
    

    问题 2。 Visual Studio 无权访问 IIS,在这种情况下,只需以管理员模式打开 Visual Studio。

    【讨论】:

      【解决方案6】:

      我遇到了类似的问题,但上述解决方案都不适合我。

      但是,我从 Visual Studio 最近的解决方案列表中打开了我的解决方案。但是当我从资源管理器中双击打开解决方案文件时,项目加载正确。

      【讨论】:

        【解决方案7】:

        这通常发生在 IIS 中未设置身份验证或网站(或虚拟目录)未在 IIS 中设置时。要解决此问题,请打开 IIS 管理器。

        1. 确保项目存在网站或虚拟目录,并指向包含项目 bin 文件夹的文件夹。
        2. 打开身份验证并启用匿名身份验证。
        3. 在选择匿名身份验证时单击编辑。
        4. 选择特定用户,输入您的 Windows 凭据(域\用户名)。
        5. 打开 .NET 授权规则。
        6. 确保只存在允许/所有用户。
        7. 转到应用程序池->高级设置。
        8. 选择身份并输入您的 Windows 凭据(域\用户名)。

        这应该会打开网站,以便 Visual Studio 可以加载您的项目。如果没有,请转到您站点的高级设置并选择物理路径凭据。确保将其设置为直通身份验证。

        【讨论】:

        • 感谢您的回答。
        【解决方案8】:

        我收到了这个错误。

        我正在使用 IIS-Express。我有 VS2015。

        在弄乱了 .csproj 文件之后......我能够让它工作。

        在将我当前的文件与 TFS 源代码管理中的文件进行比较后,唯一的区别就是这一行。

        以前,这条线不存在。在我的“工作”(在搞砸之后)文件中,我有

        <UseGlobalApplicationHostFile />
        

        同样,在导致错误的 csproj 中,我没有魔法线,但在工作的 csproj 中,我有它。

        下面是上面的行,在上下文中。仅将以下内容用于面包屑,请勿复制/粘贴所有内容。魔术线是从底部算起 3。

        <?xml version="1.0" encoding="utf-8"?>
        <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
          <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
          <PropertyGroup>
            <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
            <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
            <ProductVersion>
            </ProductVersion>
            <SchemaVersion>2.0</SchemaVersion>
            <ProjectGuid>{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}</ProjectGuid>
            <ProjectTypeGuids>{E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
            <OutputType>Library</OutputType>
            <AppDesignerFolder>Properties</AppDesignerFolder>
            <RootNamespace>MyRootNamespace</RootNamespace>
            <AssemblyName>MyAssemblyName</AssemblyName>
            <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
            <MvcBuildViews>false</MvcBuildViews>
            <UseIISExpress>true</UseIISExpress>
            <IISExpressSSLPort />
            <IISExpressAnonymousAuthentication>enabled</IISExpressAnonymousAuthentication>
            <IISExpressWindowsAuthentication>enabled</IISExpressWindowsAuthentication>
            <IISExpressUseClassicPipelineMode>false</IISExpressUseClassicPipelineMode>
            <SccProjectName>SAK</SccProjectName>
            <SccLocalPath>SAK</SccLocalPath>
            <SccAuxPath>SAK</SccAuxPath>
            <SccProvider>SAK</SccProvider>
            <UseGlobalApplicationHostFile />
          </PropertyGroup>
          <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        

        【讨论】:

          【解决方案9】:

          当我将 WCF REST 服务从 IISExpress 移动到 localhost 时,我遇到了同样的问题。所以,我所做的是在记事本中打开 .csproj 文件并查找 UseIISExpress,将其值从 false 更改为 True。 然后以管理员身份打开VS2015,它工作。好消息是,当我运行该项目时,它仍在我的本地主机而不是 IISExpress 上运行。

          【讨论】:

            【解决方案10】:

            我在升级 Visual Studio 2017 时遇到了这个问题。它已得到修复,现在可在更新版本中使用。

            您可以通过产品内通知或https://www.visualstudio.com 下载最新更新

            参考: Project could not be opened because the Visual C# 2017 compiler could not be created

            【讨论】:

              【解决方案11】:

              我创建了一个新的 Sln 文件。


              关闭解决方案。

              打开主项目的项目文件。将有问题的项目添加回新的 Sln 文件。

              将 Sln 文件保存在旧故障文件的顶部。

              【讨论】:

                【解决方案12】:

                我遇到了同样的错误,这就是解决我的问题的原因。在解决方案的根目录中,您应该会看到一个 .vs/config/applicationhost.config。在此文件夹中删除违规站点。我的看起来像这样:

                        <site name="FrontEnd.Web" id="2">
                            <application path="/" applicationPool="Clr4IntegratedAppPool">
                                <virtualDirectory path="/" physicalPath="C:\xxxxx\xxxxx\xxxxx\FrontEnd.Web" />
                            </application>
                            <bindings>
                                <binding protocol="http" bindingInformation="*:3391:localhost" />
                            </bindings>
                        </site>
                

                我删除了此应用程序的整个站点标记,保存,然后右键单击我的解决方案 > 添加 > 现有项目并将项目重新添加到解决方案中。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-10-02
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-02-25
                  • 2021-01-29
                  相关资源
                  最近更新 更多