首页 > 其他分享 >安装IIS及IIS部署.net core站点

安装IIS及IIS部署.net core站点

时间:2024-03-01 11:44:55浏览次数:24  
标签:core IIS hosting 站点 dotnet net 日志

一.为啥要有网络站点
我们在本地编写好网站程序,如何让别人也能访问到你编写好的网页呢?
此时就需要我们有个专属的容器来承接住,并且能让别人进行访问。
接下来就是我们的重点IIS部署网站站点

二.需要做的准备工作
1.安装IIS(Internet Information Services ( IIS,互联网信息服务 ))
路径:
控制面板\所有控制面板项\程序和功能,右侧的启用或关闭window功能,勾选上Internet Information Services文件夹下的页面如下:
1
2
3

Microsoft.NET Framework 3.5.1 也选择。
注意:
当安装IIS时,没勾选上"Internet Information Services-》万维网服务-》运行状况和诊断"时,部署的网站站点会少掉日志文件显示,如下图:

找到日志之后点击打开,会出现下面的图片信息,这里面就有IIS日志

一般情况下IIS日志在C:\inetpub\logs

2.启动站点的必要条件
接口想要真正的启动成功,需要iis上有能运行接口的插件(依赖的组件)-》dotnet-hosting,但是由于接口用的.net 版本不同,故也需要安装不同的dotnet-hosting。
hotnet-hosting下载连接:
(https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-aspnetcore-5.0.17-windows-hosting-bundle-installer)

装dotnet-hosting成功后,通过在IIS管理台上通过 模块按钮查看,如下图


点击模块后,可以看到下方这个页面


三.部署站点
部署方式和部署.NET站点一样(安装IIS和常规的IIS相关组件),只是需要将站点的应用程序池设置.NET CLR版本为 无托管代码,如下图:

接下来需要重启一下服务器,重新加载刚配置好的信息。

注:运行不同的.net API,需要安装不同的IIS插件(dotnet-hosting)。如API是.net 5.0的,就需要安装dotnet-hosting为5.0版本的;
API是.net 6.0的,就需要安装dotnet-hosting为6.0版本的;。

四.web.config详解
vs发布后的站点文件夹下会带有一个web.config文件。文件格式如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\Test1.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</location>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
上面的handlers节点下包含名称aspNetCore,modules=“AspNetCoreModule
”的节点。意思即对应IIS下的AspNetCoreModule HttpModule。 这里不要对其进行改动,保持默认配置即可。
下面的aspNetCore节点内的processPath意思表示该站点需在IIS工作进程内托管,这种模式称之为进程内托管模型。在进程内托管时,该模块会使用 IIS 进程内服务器实现,即 IIS HTTP 服务器 (IISHttpServer)。在IIS托管下使用进程内托管模式比进程外托管模式性能更强。 stdoutLogEnabled属性表示是否开启日志(建议开启),
stdoutLogFile属性表示日志输出目录。

可以在配置文件中新增环境变量,如下:

<aspNetCore processPath="dotnet" arguments=".\MyApp.dll" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout">

<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
<environmentVariable name="CONFIG_DIR" value="f:\application_config" />
</environmentVariables>
</aspNetCore>
1
2
3
4
5
6
7
ASPNETCORE_ENVIRONMENT变量对应项目的appsettings.json文件读取目录(可读取开发环境Development或生产环境Product)
CONFIG_DIR是我们自定义的一个环境变量,可在站点启动时候读取该变量做相应的逻辑。
注意此配置文件下的环境变量权重高于我们在操作系统下配置的环境变量

官网说明:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/index?view=aspnetcore-2.1#sub-applications

常见的部署问题(持续更新)
上面的部署步骤我都走完后,开启站点遇到下面这个错误:


404!!!
我还只是默认的webapi啊,代码都是微软自动生成的啊!!!然后查看IIS日志, 如下图

 

 

打开IIS日志存放目录,C:\inetpub\logs\LogFiles\W3SVC4打开一看,没问题啊,没有错误日志啊(内心很纠结。。。)。

各种百度、Goolge就是没找到解决办法,一直以为是环境问题,服务器都重启了不下3次

最后自己尝试手动补齐了路由,一看可以了!!!
说到底还是对.NetCore了解不够深入,发布后IIS托管站点后不会对路由默认补齐,所以在项目的launchSettings.json文件里改成一朵花都没用。


默认路由未自动补齐导致404的解决办法:
1、Nuget 安装Microsoft.AspNetCore.Rewrite
2、在启动项目Startup.Configure方法下的app.UseMvc();代码前加入下面代码:
3.自己要把接口后面的参数请求不全

var option = new RewriteOptions();
option.AddRedirect("^$", "swagger"); //swagger为补充的路由
app.UseRewriter(option);

app.UseMvc();·
1
2
3
4
5
注:webconfig讲解部分来源于 https://www.jianshu.com/p/a03c67feb0bd
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_45025876/article/details/133775482

标签:core,IIS,hosting,站点,dotnet,net,日志
From: https://www.cnblogs.com/wangtiantian/p/18046621

相关文章

  • iis部署.net项目
    介绍IIS(InternetInformationServices)是由微软开发的一款Web服务器软件,用于托管和管理Web应用程序。在部署.NET项目时,IIS是一个常见的选择。本文将介绍如何在IIS上部署.NET项目,并提供一些代码示例。步骤以下是在IIS上部署.NET项目的一般步骤:1.安装IIS首先,确保计算机上已安装II......
  • Entity Framework Core 使用HiLo(高低位模式)生成主键
    Hi(高位):数据库生成,比如100、200、300Lo(低位):本地生成,比如101、201、301数据库给本地分配一个范围,范围用于主键的自增。每次连接数据库的时候和当范围用完的时候都会从数据库中重新取出一个范围。实体类:[Table("T_Menu")]publicclassMenu{publicintId{get;set;......
  • 界面控件Telerik UI for ASP. NET Core教程 - 如何为网格添加上下文菜单?
    TelerikUIforASP.NETCore是用于跨平台响应式Web和云开发的最完整的UI工具集,拥有超过60个由KendoUI支持的ASP.NET核心组件。它的响应式和自适应的HTML5网格,提供从过滤、排序数据到分页和分层数据分组等100多项高级功能。上下文菜单允许开发者为应用程序的最终用户提供额外的......
  • 无法启动 IIS Express Web 服务器、无法注册 URL、访问被拒绝
    https://stackoverflow.com/questions/23502327/unable-to-launch-the-iis-express-web-server-failed-to-register-url-access-is-d34当我尝试从远程位置访问我的网站时,发生了这种情况:首先,applicationhost.config(VS2015)包含标准:<bindingprotocol="http"bindingInform......
  • matlab进行深度学习MatCovNet
    MatCovNet官网http://www.vlfeat.org/matconvnet/ 深度学习在objecttracking中的使用也越来越多,从去年的VOT结果来看,很多tracker都应用了convolution feature,整体效果都比之前的方法提高了一大截,所以学习deeplearning需要提上日程了。看了HCF以及C-COT的源码,都运用到了matl......
  • kubernetes的pod中获取客户端真实ip
    kubernetes的pod中获取客户端真实ip在Kubernetes中,Pod拿到的远程IP是Kubernetes集群内部的IP,而不是客户端的真实IP。这是由于Kubernetes的网络模型和网络配置方式导致的。Kubernetes使用了一种称为"Service"的抽象来提供网络连接和负载均衡功能。当您创建一个Ser......
  • Microsoft.AspNetCore.Http.Abstractions 2.20 is deprecated
    您想要升级 Microsoft.AspNetCore.Http.Abstractions 包,您需要注意以下几点:Microsoft.AspNetCore.Http.Abstractions 包在 ASP.NETCore2.2 版本后已经被标记为过时,因为它已经被包含在 Microsoft.AspNetCore.App 框架引用中12。因此,您不需要单独引用这个包,只需要在项目......
  • docker 部署.net core 3.1程序
    docker安装安装所需的软件包,yum-utils提供了yum-config-manager,并且devicemapper存储驱动程序需要device-mapper-persistent-data和lvm2。sudoyuminstall-yyum-utils\device-mapper-persistent-data\lvm2使用命令来设置docker仓库(阿里源,官方源太慢了)sudo......
  • Error creating bean with name 'XXX': Bean with name 'senseOneToSomeFeignImpl' ha
    关于Spring框架中的循环依赖问题,您可以尝试以下几种方法来解决:重新定义Bean依赖:重构代码以消除循环依赖。这可能涉及重新设计类,使它们不相互依赖即可运行。使用Setter注入:与构造函数注入相比,使用setter注入。Spring可以更好地处理setter注入的循环依赖,因为对象引用是在对象构造......
  • IIS配置Websocket
    前言作为新手小白最近有项目用了websocket,发布到iis后用其他设备连接不到,网上查询了一下,需要配置一下,记录下配置方法,防止忘记在控制面板/程序中打开启用或关闭windows功能2.启用websocket协议3.打开iis中的配置编辑器4.选择system.webserver/websocket节点......