今天第一次将整个 asp.net core 站点发布到 IIS 上,以前都是发布到 Linux 服务器上。

开始使用 dotnet publish -c release 命令发布,用浏览器访问站点时出现下面的错误:

HTTP Error 502.5 - Process Failure

Common causes of this issue:

The application process failed to start
The application process started but then stopped
The application process started but failed to listen on the configured port Troubleshooting steps: Check the system event log for error messages
Enable logging the application process’ stdout messages
Attach a debugger to the application process and inspect

而在命令行下通过发布时生成的可执行文件运行站点正常(Web服务器用的是Kestrel)。

打开 web.config 文件一看发现 processPath 的值不对:

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>

这个值应该是在发布时被替换的,怎么没替换呢?

到 project.json 中一看,发现下面的东东:

"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}

目测 web.config 的转换工作是 dotnet publish-iis 命令的任务之一。

于是手动运行 dotnet publish-iis 命令:

dotnet publish-iis -p "bin\release\netcoreapp1.1\win8-x64\publish" -f win8-x64

出现下面的错误提示(实际上在使用 dotnet publish 命令时已经出现这个错误提示,由于提示文字没有以不同颜色区分显示,所以当时没注意):

The specified framework 'Microsoft.NETCore.App', version '1.1.0-preview1-001100-00' was not found.
- Check application dependencies and target a framework version installed at:
C:\Program Files\dotnet\shared\Microsoft.NETCore.App
- The following versions are installed:
1.1.0
- Alternatively, install the framework version '1.1.0-preview1-001100-00'

project.json 中 Microsoft.NETCore.App 的版本都已经是 1.1.0 ,怎么还报找不到 1.1.0-preview1 的错误?

在 project.json 中巡视一番,遂怀疑下面的 NuGet 包还在依赖 Microsoft.NETCore.App 1.1.0-preview1。

"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.0.0-*",
"imports": "portable-net45+win8+dnxcore50"
}
}

将之升级为最新版 1.1.0-preview4-final ,问题解决。

dotnet publish-iis 命令成功执行:

$ dotnet publish-iis -p "bin\release\netcoreapp1.1\win8-x64\publish" -f win8-x64
Configuring the following project for use with IIS: 'bin\release\netcoreapp1.1\win8-x64\publish'
Updating web.config at 'bin\release\netcoreapp1.1\win8-x64\publish\web.config'
Configuring project completed successfully

dotnet publish -c release 命令也生成了转换后的 web.config 。

<aspNetCore processPath=".\CNBlogs.XXX.WebApi.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />

将asp.net core站点发布到IIS上遇到的问题的更多相关文章

  1. Windows平台部署 Asp.Net Core 3.1.0,将 ASP.NET Core 应用发布到 IIS ,使用 IIS 在 Windows 上托管 ASP.NET Core

    第一部分:本教程介绍如何在 IIS 服务器上托管 ASP.NET Core 应用. 官方文档地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutori ...

  2. .Net Core 项目发布在IIS上 访问404 问题对应

    对策: 1.进入线程池画面,将当前程序的线程池设为"无托管代码"   2.修改配置文件 Web.config,加上配置   原因: 因为.NetCore 5.0 自带集成了Swag ...

  3. 无法下载apk等格式的文件的解决方案---ASP .NET Core 2.0 MVC 发布到IIS上以后无法下载apk等格式的文件的解决方案

    ASP .NET Core MVC 发布到  IIS 上以后 无法下载apk等格式的文件 使用.NET Core MVC创建了一个站点,其他文件可以下载,但是后来又需求,就把手机端的apk合适的文件上 ...

  4. ASP .NET Core 2.0 MVC 发布到 IIS 上以后 无法下载apk等格式的文件

    ASP .NET Core MVC 发布到  IIS 上以后 无法下载apk等格式的文件 使用.NET Core MVC创建了一个站点,其他文件可以下载,但是后来又需求,就把手机端的apk合适的文件上 ...

  5. 在Linux上用supervisor运行ASP.NET Core站点的一个坑

    将一个ASP.NET Core站点在Linux服务器上以self-contained部署方式发布出来后,直接在终端上运行下面的命令,站点可以正常运行. /data/AboutUs/bin/Debug/ ...

  6. ASP.NET Core部署系列一:发布到IIS上

    前言: 当构建一个ASP.NET Core应用程序并且计划将其运行在IIS中时,你会发现Core应用程序和之前版本的ASP.NET程序在IIS中的运行方式是完全不一样的.与ASP.NET时代不同,AS ...

  7. .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点

    2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上 ...

  8. .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上

    今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...

  9. asp.net core 2.1 部署IIS(win10/win7)

    asp.net core 2.1 部署IIS(win10/win7) 概述 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器 ...

随机推荐

  1. 解决poshytip 表单高度大于屏幕高端 显示问题

    Poshy Tip是一款非常友好的信息提示工具,它基于jQuery,当鼠标滑向链接时,会出现一个信息提示条.信息的内容直接可以在HTML里设定也可以是从服务端调用的数据,该插件还提供了很多属性和方法. ...

  2. 【leetcode】Roman to Integer

    题目描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range fr ...

  3. Python-内置函数小结

    内建函数,Python内置的函数(build in function),不需要引用其他包,一般成为BIF   abs() 计算绝对值,abs(-10),接收number,返回一个number   ma ...

  4. java接口

    一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...

  5. Web.xml配置参数详解

    1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的 ...

  6. WebGL与three.js

    前面学习了一些webgl的基础知识,现在就用一下three.js写一个小例子,记录一下学习的过程. 效果图: 1.去github下载three.js,然后将它加载到网页中 <script src ...

  7. filefiter

    1.写一个类继承与FileFilter package com.dream.musicplayer; import <a href="http://lib.csdn.net/base/ ...

  8. 国外程序员整理的Java资源大全分享

    Java 几乎是许多程序员们的入门语言,并且也是世界上非常流行的编程语言.国外程序员 Andreas Kull 在其 Github 上整理了非常优秀的 Java 开发资源,推荐给大家. 译文由 Imp ...

  9. Python网络数据采集系列-------概述

    这是一个正在准备中的系列文章,主要参考的是<Web Scraping with Python_Collecting Data from the Modern Web-O'Reilly(2015) ...

  10. iOS 时间的处理

    做App避免不了要和时间打交道,关于时间的处理,里面有不少门道,远不是一行API调用,获取当前系统时间这么简单.我们需要了解与时间相关的各种API之间的差别,再因场景而异去设计相应的机制. 时间的形式 ...