运行环境      操作系统                  开发工具      frameworks     .Net Core SDK 版本             托管运行

本地             Win10                       VS 2015        net461            2.1.401                                Kestrel

服务器          WIn Server 2012       ---                  -----               1.0.0-preview2-003121        IIS

开发做了如下相关修改:

把 App.config 全部配置全部移植到 appsettings.json。读取配置的文件同时从一个项目到另外一个项目,并由此升级了 Nuget 相关的包。

出现问题:

本地用开发工具可以正常调试编译发布, 到服务出现程序清单与加载的dll 版本不一致(Microsoft.Extensions.Configuration.Abstractions.dll 为1.0.0.0, 配置需要加载 1.1.0.0)

尝试解决:

用本地的新版本替换服务器旧版本

出现新问题: ASP .NET Core HTTP Error 502.5 – Process Failure

尝试解决:  升级服务 sdk 版本,错误依旧,安装 .NET Core  Runtime & Hosting Bundle 对应的版本,错误依旧,修改web.cofig  modules="AspNetCoreModule" 为  modules="AspNetCoreModule2"  提示找不到模块

还原 Microsoft.Extensions.Configuration.Abstractions 版本依旧无法启动, 只有删除升级的 sdk 与runtime,但是问题依旧。

最终只得在本地开发环境, 通过 Nuget 管理程序包降级  Microsoft.Extensions.Configuration.Abstractions 的版本后重新发布,发布程序在服务器才可以正常运行~~~~

本以为大功告成,然而,本地直接运行程序调试出现问题:

找到的程序集版本与清单定义不符

查看本地 debug 文件下面  exe.cofing 配置,确实指定了 1.1.0.0 版本。 手动修改后,运行程序 ,还是出现错误。

这次仔细查看异常详情:

=== 预绑定状态信息 ===
日志: DisplayName = Microsoft.Extensions.Primitives, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
(Fully-specified)
日志: Appbase = file:///E:/xxx/bin/Debug/net461/win7-x64/
日志: 初始 PrivatePath = NULL
调用程序集: Microsoft.Extensions.Configuration.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60。
===
日志: 此绑定从 default 加载上下文开始。
日志: 正在使用应用程序配置文件: E:\xxx\bin\Debug\net461\win7-x64\Siyan.MessageService.Web.exe.Config
日志: 使用主机配置文件:
日志: 使用 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config 的计算机配置文件。
日志: 在应用程序配置文件中找到重定向: 1.0.0.0 已重定向到 1.1.0.0。
日志: 策略后引用: Microsoft.Extensions.Primitives, Version=1.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
日志: 尝试下载新的 URL file:///E:/xxx/bin/Debug/net461/win7-x64/Microsoft.Extensions.Primitives.DLL。
警告: 比较程序集名称时发生不匹配: 次版本
错误: 未能完成程序集的安装(hr = 0x80131040)。探测终止。

好像焕然大悟,觉得胜利唾手可得了。赶紧到本机配置文件(machine.config )查看,并没有找到相关配置。清理解决方案,清理项目再次运行,问题还在,有点崩溃的感觉!

最后,只有出绝招了,直接强制删除 exe.config 文件 ,再次生成, 运行调试,问题解决!!!

总结: 对.net core 项目部署发布不熟悉,走了很多弯路,其实只需删除本地 bin 目录下面 exe.config 文件重新生成即可,因为 vs 自动清理不会清理旧的此文件,造成新的改动无法同步,干扰问题原因查找与解决!

.Net Core 官方配置可查看:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2

.NET Core 发布部署问题的更多相关文章

  1. [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

  2. [亲测]七步学会ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

  3. ASP.NET Core 2.0 MVC 发布部署--------- ASP.NET Core 发布的具体操作

    ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...

  4. 使用 Visual Studio 部署 .NET Core 应用 ——ASP.NET Core 发布的具体操作

    ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...

  5. .Net Core自动化部署系列(二):使用Jenkins打造镜像发布流水线

    一.简介 之前写过一篇关于Jenkins搭配GitLab实现.net core项目自动发布到IIS的博文,比较简单哈,只是个Demo.本篇我们将会使用Jenkins搭配GitLab实现镜像的自动打包和 ...

  6. ASP.NET Core 2.0发布/部署到Ubuntu服务器并配置Nginx反向代理

    原文链接https://www.linuxidc.com/Linux/2017-12/149557.htm ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用AS ...

  7. 快速搞懂.NET 5/.NET Core应用程序的发布部署

    .NET Framework时代,.NET 应用程序大多直接部署运行在Windows服务器上,当然也可以通过Mono部署运行在Linux上.无论部署exe,还是IIS站点.或是Windows Serv ...

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

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

  9. NET Core站点部署到Linux服务器

    .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上 今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站 ...

随机推荐

  1. 简易的CRM系统案例SpringBoot + thymeleaf + MySQL + MyBatis版本

    创建maven项目 pop.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns ...

  2. ColorMatrix图片饱和度设置

    package com.loaderman.customviewdemo; import android.app.Activity; import android.graphics.Bitmap; i ...

  3. Tomcat监听shutdown释放数据库连接池

    开发时因为更新代码,频繁重启Tomcat,遇到一个问题:在执行shutdown脚本后,Tomcat进程没有关闭依然存在(但是HTTP服务已经停止),需要手动执行kill命令才行.查了一些资料结合经验, ...

  4. 002-创建型-01-工厂方法模式(Factory Method)

    一.概述 定义一个创建对象的接口,但让实现这个接口的类来决定实例化那个类,工厂方法让类的实例化推迟到子类中进行. 工厂方法模式(FACTORY METHOD)同样属于一种常用的对象创建型设计模式,又称 ...

  5. Delphi ADOQuery的速度优化

    今天终于把纠缠了几天的问题改完了,说到底只是一个很小的问题,就是ADOQuery的一个小属性. 把控件DBGridEh的一列的checkbox设为true,将其绑定DataSource和ADOQuer ...

  6. Blender模型导入进Unity,旋转缩放的调整

    Blender跟Unity的XYZ轴不同的原因,导致Blender模型导入Unity之后会发生模型朝向不对. 请先看看下边这个情况: 首先,Blender物体模式下,对模型进行 旋转 缩放,将会在右边 ...

  7. 转 Linux平台卸载MySQL总结

    如何在Linux下卸载MySQL数据库呢? 下面总结.整理了一下Linux平台下卸载MySQL的方法. MySQL的安装主要有三种方式:二进制包安装(Using Generic Binaries).R ...

  8. C#基础知识学习 linq 和拉姆表达式一

    两个方法对比 第二种方法 对比学习 拉姆表达 linq 用法

  9. 解决maven打包时,会编译特定文件导致文件不可用

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resou ...

  10. 第一周--------Java的特性和优势

    --------我认可的1.跨平台性:   Java 的int 永远是32位,不像C++可能是16.,32 可能是根据编译器厂商规定的变化.这样的话,程序的移植就会变得困难2.安全性    Java ...