【问题标题】:Deploy .net core project to Windows Server 2012 r2将 .net 核心项目部署到 Windows Server 2012 r2
【发布时间】:2017-10-13 04:42:19
【问题描述】:

我将我的 .Net 核心项目部署到 window server 2012 R2 64bit 并且发生了这种情况:

HTTP 错误 502.5 - 根据 Microsoft 指南处理失败,他们说这是因为平台与 RID 冲突。

(https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x#common-errors)

我已经完成了该指南中的每一步,但无法修复它。所以有人知道如何解决这个问题吗?如果可以的话,我将不胜感激。谢谢。

注意:我已经给了发布文件夹完全权限,还安装了 ASPNetCoreModule v2.0,net core sdk 2.0。我的 IIS 版本是 8.5。

这是我的 .csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <RootNamespace>_MyAppAPI</RootNamespace>
    <AssemblyName>_MyAppAPI</AssemblyName>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DocumentationFile></DocumentationFile>
  </PropertyGroup>

  <ItemGroup>
    <Content Remove="wwwroot\swagger\authen\basic-auth.js" />
    <Content Remove="wwwroot\swagger\ui\custome.css" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Middleware\" />
    <Folder Include="Logs\" />
    <Folder Include="Models\appapi\" />
    <Folder Include="wwwroot\lib\" />
    <Folder Include="wwwroot\logs\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" />
    <PackageReference Include="Serilog.Extensions.Logging.File" Version="1.1.0" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="1.0.0" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

  <ItemGroup>
    <EmbeddedResource Include="wwwroot\swagger\authen\basic-auth.js" />
    <EmbeddedResource Include="wwwroot\swagger\ui\custome.css" />
  </ItemGroup>

</Project>

以及构建后的 web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\_MyAppAPI.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>
<!--ProjectGuid: 2510f4bb-368b-4ab2-96e1-5d06b14d677e-->

我遇到了这个:IIS fails to run ASP.NET Core site - HTTP Error 502.5 似乎正是我的问题。但我在任何地方都找不到 .exe 文件。 :(

【问题讨论】:

  • 你能告诉我们更多关于你是如何发布应用程序的吗?可以给我们csproj吗?
  • @IvanMilosavljevic 你好。我只是更新了我的 csproj 文件和 web.config。
  • 你如何部署/发布项目?
  • @IvanMilosavljevic 从视觉工作室,我发布文件夹发布输出。然后将所有内容复制到 C:\inetpub\wwwroot 中名为“api”的新文件夹中。之后,我在 IIS 中创建了一个物理路径为 C:\inetpub\wwwroot\api 的网站并从那里运行。
  • 您解决了吗?我在尝试部署 .Net Core 2.0 网络应用时遇到了同样的问题。

标签: c# .net-core iis-8.5 window-server


【解决方案1】:

有人可能会从我已经完成的步骤中获得帮助。

确保(在 Windows 服务器中托管 .net 核心应用程序时):

  1. 启用 IIS
  2. 安装.net core SDK - 对应包(2.0/2.1/etc)
  3. 安装.net core runtime - 对应包(2.0/2.1/etc)
  4. 安装.net core windows server hosting - 对应包(2.0/2.1/etc)
  5. 安装与visual studio版本对应的c++可再发行文件
  6. 在inetpub/wwwroot/下创建文件夹
  7. 将您发布的文件粘贴到该文件夹​​中
  8. 在 IIS 的默认网站下添加应用程序并提供别名和物理路径。

就是这样。您可以使用项目的服务器 ip/别名来浏览您的应用程序 http://192.168.100.10/samplesite

【讨论】:

  • Runtime 已经是 SDK 的一部分,所以不需要单独安装。另外,我发现我不需要 C++ 可再发行组件(并且在某处读到只有在没有 Internet 连接时才需要它)。此外,所有这些步骤也适用于 Win7。
  • 更重要的一步:确保在进行任何配置更改后重新启动 IIS。 (例如,如果在第 8 步之后没有重新启动,则会失败并显示一些误导性的错误消息。)
【解决方案2】:

遇到同样的问题,先把web.config里的loging改为:

stdoutLogEnabled="true" 

并确保您已在已发布应用的根文件夹中创建“日志”文件夹。 重新启动 IIS 站点(您的网站)并检查日志,他们会告诉您出了什么问题。

【讨论】:

    【解决方案3】:

    只是需要仔细检查一下,您是否设置了默认文档?

    此外,在 IIS 中,如果您是运行 .net 2.0 项目。

    取决于您使用的 .net 版本。

    【讨论】:

    • 您只需要在 Windows 上安装托管包并使用 Visual Studio 发布您的 asp 网络核心部署到 IIS 中的文件夹。它会在之后工作
    【解决方案4】:

    你好! Windows 上 .NET Core 的先决条件:

    对于 Windows 8.1 及更早版本,或 Windows Server 2012 R2 及更早版本:

    确保您的 Windows 安装是最新的并且包括 KB2999226,它可以通过 Windows 更新安装。如果您没有安装此更新,则在启动 .NET Core 应用程序时会看到如下错误:The program can't start because api-ms-win-crt-runtime-l1-1-0您的计算机中缺少 .dll。尝试重新安装程序以解决此问题。

    查看更多: https://docs.microsoft.com/pt-br/dotnet/core/windows-prerequisites?tabs=netcore30

    【讨论】:

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