• 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寄宿。

  • 相关阅读:
    【翻译/介绍】jump consistent hash:零内存消耗,均匀,快速,简洁,来自Google的一致性哈希算法 [2015-03-13]
    现代密码学实践指南[2015年]
    本博客迁走了
    高性能web系统的架构和系统优化
    vs 2013调试的时候重启的解决方案
    年会与项目管理
    javascript 关闭窗口,弹出新窗口并带有确认关闭对话框解决办法
    成长
    POCO exception
    通过OpenGL ES在iOS平台实践增强现实(二)
  • 原文地址:https://www.cnblogs.com/fer-team/p/12690769.html
Copyright © 2020-2023  润新知