• Asp.net core使用IIS在windows上进行托管


    摘要

    最近项目中,尝试使用asp.net core开发,在部署的时候,考虑现有硬件,只能部署在windows上,linux服务器暂时没有。

    部署注意事项

    代码中启用iis和Kestrel

     public class Program
        {
            public static void Main(string[] args)
            {
                BuildWebHost(args).Run();
                
            }
    
            public static IWebHost BuildWebHost(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                .UseKestrel()           
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .UseApplicationInsights()
                .Build();
    
        }

    在服务端安装

     .NET Core Windows Server 托管捆绑包

    捆绑包可安装 .NET Core 运行时、.NET Core 库和 ASP.NET Core 模块。 该模块创建 IIS 与 Kestrel 服务器之间的反向代理。 如果系统没有 Internet 连接,请先获取并安装 Microsoft Visual C++ 2015 Redistributable,再安装 .NET Core Windows Server 托管捆绑包。

     

    重启系统,或从命令提示符处依次执行 net stop was /y 和 net start w3svc。 重新启动 IIS 将选取安装程序对系统 PATH 所作的更改。

    发布

    使用vs发布或者使用命令,这里由于使用vs2017开发,就直接用vs发布了

    在服务端新建站点

    修改应用池CLR为No Managed Code

    可以下面新建子站点test

    确认进程模型标识拥有适当的权限。

    如果将应用池的默认标识(“进程模型” > “标识”)从 ApplicationPoolIdentity 更改为另一标识,请验证新标识拥有所需的权限,可访问应用的文件夹、数据库和其他所需资源。例如,应用池需要对文件夹的读取和写入权限,以便应用在其中读取和写入文件。

     常见错误

    如果通过ip和端口访问,报500错误,但在服务器上 通过dotnet xxxxx.dll可以启动kestrel,并可以通过http:\localhost:5000进行访问,一般可以通过修改站点目录权限进行解决。至少可以读写的权限。

    其他错误,可以参考

    https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/troubleshoot

  • 相关阅读:
    《驱动学习 —— GPIO子系统和pinctl子系统》
    《驱动学习 —— input子系统》
    《视频相关名词了解》
    《网络编程 —— socket编程实例》
    uhci ohci ehci的区别
    phy的概念
    USB DEVICE
    gdb常用命令
    总线设备模型中注册
    module_i2c_driver
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/8583772.html
Copyright © 2020-2023  润新知