本来我的系列教程已经慢慢剥离开IIS了,毕竟有了Docker容器以后,配合Nginx使用真的很不错。但是还是有很多同学使用IIS的,这个不可否认IIS的重要性。随着.NET的发布,很多小伙伴已经开始升级了,我也就陆陆续续收到了一些问题咨询,问题也是说大不大,说小不小,像我这样很久都没有玩儿过IIS的,也就一两个小时就解决了,所以基础知识还是特别重要的。

同时,我也收到了一些质疑的声音:
比如.NET5的镜像有问题?
比如为什么要升级呀,又不是LTS?

鉴于这些问题,我想说和郭德纲老师的水洗煤发射火箭是同一类问题,我不是很懂,也没办法准确回答,具体请百度吧。

本文主要是列举几个这几天的问题,不会深入讲解原理什么的,很好理解的。

再次强调下,本文出现的不是.NET的Bug!!!,都是一些工具上的问题,只是一些弯路和尝试而已,因为这些情况,在3.1的时候也会有,只要细心的发现就能知道。

- 奇幻的旅程,马上开始 -

BCVP 开发者说


-01-

IIS安装的问题

这里有两个问题,第一个安装IIS,都勾选哪几项,我为了测试效果,重装了我的某一台服务器:

然后安装下IIS,我这里很简单的勾选下这几项,不过也没有具体测试,是否可以更少的安装:

安装完IIS,系统里找不到,这确实偶尔会有这个小问题:
需要重启下,然后就可以在控制面板里找到:

关于IIS的安装就特别简单了,不多说了,下边说说重头戏。

下载运行时或者SDK,那为了演示效果,肯定我们在服务器里,只需要下载运行时是吧,毕竟不需要开发,或者命令行操作,如果你是用IIS的话,肯定不会再搞命令行了,基本都是本地拷贝上传到服务器的。

下载地址:
https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-aspnetcore-5.0.0-windows-x64-installer

接下来就是部署站点了。

-02-

IIS部署,出现500.19异常

首先,已知是项目已经在本地成功升级.net5,如果不会的话,可以看看我之前的文章《BCVP第2期:项目已完成升级.NET5.0》,然后本地开发已经能正常运行了,把发布后的文件上传到服务器。

关于这个异常,先来个异常截图,其实一般老手一眼就能看出来问题点:

没错,就是这个500.19 - Internal Server Error。

我之前写过一篇很全的升级3.1的文章:

https://www.cnblogs.com/laozhang-is-phi/p/beautifulPublish-mostBugs.html

这里讲了几乎所有升级3.1的时候遇到的问题,同样适用于5.0。

没错,就是没有安装指定的模块!测试方法,就是点击对应的站点,右侧功能区,点击模块,看看是否正常显示:

所以,就需要安装指定的模块了。

因为是.NET5,所以不仅需要安装运行时,还要安装HOST,省事儿的话,直接安装捆绑的包就行了:

https://dotnet.microsoft.com/download/dotnet/5.0

然后下载并安装:

安装完成后,可以在控制面板的程序中,查看到相应的结果:

如果提示重启的话,需要重启,接下来就可以在IIS中,点击模块,正常显示了:

是不是很熟悉,是不是很简单?

-03-

IIS部署,出现异常502.5

刚刚我们已经安装了Host和Runtime,但是运行的时候还是出现了502.5,那是为什么?现在我还是把错误截图贴出来:

可以看到,是进程外启动失败,如果你看过我的视频,关于进程内和进程外的介绍,肯定会知道他们的区别。

进程外,其实就是关于Kestrel.exe的,进程内是w3wp.exe的,如果你之前的项目是3.1升级过来的,在发布的时候,会生成一个web.config,里边有关于进程启动的配置:

<?xml version="1.0" encoding="utf-8"?>
<configuration><location path="." inheritInChildApplications="false"><system.webServer><handlers><add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /></handlers><aspNetCore processPath="dotnet" arguments=".\Blog.Core.Api.dll" stdoutLogEnabled="false"stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess" /></system.webServer></location>
</configuration>
<!--ProjectGuid: 6F47A41A-085E-4422-BB73-5A2CBAA07D9F-->

就是hostingModel,不知道有多少小伙伴在意过这个,这里官方默认的是OutOfProcess进程外的,但是如果你新建一个.net5的项目,它发布好后,默认的就是inprocess的,不信你自己可以看看。

这就导致了,部署的时候,报了进程外的异常,所以只需要把这里改成inprocess就行了,就可以一切正常。

如果你说,我就想要进程外的,可以!在服务器上安装对应的SDK就行了,记得有必要的话需要重启服务器的。

到这里,应该就没有什么问题了:

-04-

.NET5.0 无法连接Oracle

这个也是这几天问的比较多的,我之前使用的Oracle不多,但是经过测试,发现了.NET5.0的Web项目连接Oracle的时候出异常,但是控制台却是可以的。

经过官方给建议,主要是ASP.NET5.0做了更高的安全验证:

这也就是说明了,为什么控制台会成功,而web项目会失败的原因。

更多内容,查看我提交的这个issue吧:

https://github.com/dotnet/aspnetcore/issues/27872

官方也很快的给出了解决方案和跟踪报告,横跨全球,六个小时就解决了,说实话真的很佩服,也很激励我的。

方案很简单,只需要在.net5的webapi项目的.csproj文件中,配置属性即可:

<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>

想必都能看得懂,好啦,.NET5已经顺利的连上Oracle了,这种问题还是要和第三方沟通,因为不是.Net的问题的。

打完收工!

基于Net/Core,快速搭建 API & SPA 及微服务应用组织

BASE NETCORE (VUE) PROJECT TEAM

每一个.NET开发者都可以通过自己的开源项目(最好可以配套简单发表些文章)在这里进行分享,BCVP开发者组织的意义就是激发和挖掘更多的作品,可能偏基础,但是都会有价值。目的就是希望:每个人能将从社区学到的知识,进行自己消化和总结,浓缩成一个个独立的项目,接着投入到社区,最后让更多的初学者去了解、去学习、去思想碰撞,从而达到学习来源于社区,最后反哺于社区的良好循环目的,我们都是学生,也都是下一批初学者的老师,这才应该是一个社区正向推动的方法。

地址:
https://github.com/BaseCoreVueProject

可以在Home仓库里,查看具体的流程说明,只要你愿意分享,就来吧。

加入我们

关于.NET5在IIS中部署的几个问题总结相关推荐

  1. 如何在 IIS 中部署 WCF

    在 IIS 中部署 WCF ,最重要的 是 Web.config 文件的配置 . 首先, 正常安装 IIS 2,注册 ServiceModelReg.exe -i 3,  WCF 的发布 , 需要 拷 ...

  2. 在IIS中部署SPA应用,多么痛的领悟!

    目前公司的Web项目是SPA应用,采用前后端分离开发,所以有时也会倒腾Vue框架. " 前后端应用最终以容器形态.在k8s中部署, 为此我搭建了基于Gitlab flow的Devops流程. ...

  3. 在IIS中部署Asp.net Mvc

    概述: 最近在做一个MVC 3的项目,在部署服务器时破费了一番功夫,特将过程整理下来,希望可以帮到大家! 本文主要介绍在IIS5.1.IIS6.0.IIS7.5中安装配置MVC 3的具体办法! 正文: ...

  4. 在 IIS 中部署 SPA 应用,多么痛的领悟!

    作者 | 小码甲 来源 | 全栈码农画像(ID:nodotnet) 头图 |  CSDN 下载自东方IC 目前公司的 Web 项目是 SPA 应用,采用前后端分离开发,所以有时也会倒腾 Vue 框架. ...

  5. OpenLayers基础:在IIS中部署并启用CGI

    在使用OpenLayers过程中,若在IIS下部署,需要在IIS启用CGI,当前以IIS7为例进行介绍如何来启用CGI和相关的设置.启用CGI的目的是使用WFS的前提,因为WFS在请求过程中会出现跨域 ...

  6. IIS中部署vue程序,刷新直接404

    问题描述:直接访问首页可以刷新,但是在其他页面时候是不能刷新的,原因是路由机制和iis的认知不一致,在centos中配置nginx就ok了,但是在iis中怎么整? 解决方案:一般可以直接解决的方法也就 ...

  7. Windows Azure Cloud Service (23) 使用Full IIS模式部署多站点和虚拟目录

    <Windows Azure Platform 系列文章目录> 本章我们将介绍如何使用Windows Azure的Full IIS模式部署多站点和虚拟目录. 首先我们先新建一个Window ...

  8. 集群服务器分布式iis_Nginx+IIS分布式部署和负载均衡

    标签: 1.IIS中部署2个网站 创建2个网站,端口分别为9001.9002 2.下载Nginx 可以进入Nginx官网进行下载,官网地址: http://nginx.org/,需要下载windows ...

  9. Nginx+IIS分布式部署和负载均衡

    Nginx+IIS分布式部署和负载均衡 1.IIS中部署2个网站 2.下载Nginx 3.Nginx安装 3.1下载解压到D盘根目录下,打开conf目录下的nginx.conf文件 3.2设定负载均衡 ...

最新文章

  1. JavaScript初学者编程题(20)
  2. numpy是这样操作的
  3. python游戏贪吃蛇_Python写的贪吃蛇游戏例子_python
  4. addListener添加事件监听器,第三个参数useCapture (Boolean) 的作用
  5. 硬盘安装Linux救援系统,硬盘安装linux系统
  6. REVERSE-PRACTICE-JarvisOJ-2
  7. Merge into的使用详解-你Merge了没有【转】
  8. 转载:Charles 使用过程中遇到问题
  9. 鼠标滚轮机械编码器原理
  10. 矩阵正定 matlab,MatLab的:CHOL矩阵必须是正定
  11. Vulnhub-Moneybox
  12. 体系结构 | 五段流水线 | 流水线技术
  13. my firefox常用的插件介绍
  14. maven私服下载jar包失败的问题记载
  15. Matlab MCR 7.14
  16. 用户行为分析(如何用数据驱动增长)-读书笔记2
  17. excel 表格身份证校验和手机号校验 公式
  18. 卷不动了?300 秒快速了解 Java 9 - 16 新特性,助你脱离内卷
  19. 元芳,你知道公元一年一月一日是星期几吗
  20. 走进人工智能|深度学习 算法的创世纪

热门文章

  1. iaas层次化结构--从业务需求到设计需求
  2. 解决“无法从套接字读取更多数据”
  3. hdu 4530(数学)
  4. 不是架构的架构之四:业务层的实现与自动代理
  5. 梅原对justin wang 真人版
  6. 北京一公交车发生爆炸 疑为乘客携带药品起反应
  7. java 获取手机归属地_java 获取手机归属地
  8. django 用户管理(1)
  9. RabbitMQ详解(三)
  10. shiro real的理解,密码匹配等