zoukankan      html  css  js  c++  java
  • IIS运行NetCore程序

    前 言

    首先看下.net的最新的框架图,

     目前是中间的lib层统一了,用standard library了。上层的各应用统一还需要点时间。

     我们想要在IIS部署站点,需要熟悉下IIS的运行机制,才能更好的实施。首先来看下图

     具体的IIS运行原理,大家可以看这篇

    实  践

         大家都知道我们目前在运行asp.net web程序的时候,可以直接运行bin下的Debug etcoreapp3.1xx.exe用来启动web站点,类似于这样的

         

     另外我们可以通过net自带的命令 dotnet xxx.dll

     但是通过这两种方式启动的时候,可能发现静态文件没有加载进来。那是为什么呢?

    碰到这样的问题,我们不妨通过url展开看看css,js等文件加载路径,再通过代码跟踪很容找到问题点。

     app.UseStaticFiles(new StaticFileOptions()
                {
                    FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot"))
                });
    

     可以通过修改静态文件路径的方式解决。

     正  文

    IIS运行NetCoreWeb程序需要准备的工作如下:

      1.安装IIS;

      2.安装NetCoreRuntime,也可以安装SDK,包含运行时。VS自带的不能共享使用。

      3.安装服务器主机绑定程序Hosting(dotnet-hosting-3.1.0-win.exe)。这个程序会嵌入IIS的module中,应用程序池选无托管程序或者选择任何一个都可以。

        注意我们在发布好的网站根目录发现会保留一个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=".WebApplication1.dll" stdoutLogEnabled="false" stdoutLogFile=".logsstdout" hostingModel="inprocess" />
        </system.webServer>
      </location>
    </configuration>

     通过这个配置文件我们发现所有的来自于IIS的web请求都交由AspNetCoreModuleV2来处理,而后再转到命令式的dotnet对应的dll应用程序处理。

    最后附上一张IIS处理Core程序的简略图:

    备注:本机测试使用控制台启动,服务器还需使用IIS寄宿。

  • 相关阅读:
    machine learning学习笔记
    google detection
    检查ftp备份数据完整性及短信告警的shell脚本
    javascript获取url参数的方法
    php随机生成福彩双色球号码
    php 身份证号码获取星座和生肖
    JS将搜索的关键字高亮显示实现代码
    C#保存上传来的图片示例代码
    window.onresize 多次触发的解决方法
    setTimeout和setInterval的深入理解
  • 原文地址:https://www.cnblogs.com/fer-team/p/12690769.html
Copyright © 2011-2022 走看看