asp net core 跨平台初体验

标: 在 ubuntu 16.04 上部署一个 asp.net core 站点,打开网站后显示一段文字。

安装 net core

运行环境:ubuntu 16.04 LTS

1.添加 apt 源

依次执行三条命令

sudo sh -c ‘echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list‘

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893

sudo apt-get update

2.执行安装

sudo apt-get install dotnet-dev-1.0.4

3.验证安装结果

执行命令

dotnet --version

显示 1.0.4 表示一切正常。

编写程序

IDE:visual studio community 2017 版

Web 框架:Nancy(nancy 是一个轻量级、但是功能很强大的 web 框架,在此不做详细介绍。)

1.在 vs 中新建一个空的 asp.net core web 应用程序

2.添加 nuget 包

默认的程序有三个包

咱们用不上 application insight,删掉,然后添加 microsoft.aspnetcore.owin 和 nancy 两个包,先安装 owin,再安装 nancy。

注意 nancy 对 aspnet core 的支持还处于测试版,所以再搜索 nancy 之前需要勾选 nuget 包管理器的 “包括预发行版”

3.修改 Program.cs 文件

删除我们不需要的代码

public static void Main(string[] args)
  {
  var host = new WebHostBuilder()
  .UseKestrel()
  .UseContentRoot(Directory.GetCurrentDirectory())
//去掉                .UseIISIntegration()
  .UseStartup<Startup>()
// 去掉                .UseApplicationInsights()
  .Build();

  host.Run();
  }

4.修改 Startup.cs 文件

using Nancy.Owin; // 添加 nancy 的 owin 支持
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
  {
  loggerFactory.AddConsole();

  if (env.IsDevelopment())
  {
  app.UseDeveloperExceptionPage();
  }

// 只需要添加一行代码即可,注意必须先 using Nancy.Owin;
 app.UseOwin(p => p.UseNancy());

/*因为咱们用 nancy 框架,下面的代码可删掉
  app.Run(async (context) =>
  {
  await context.Response.WriteAsync("Hello World!");
  });
  }*/ 

5.添加 nancy 所需的 module 文件,本文中使用 homeModule.cs

public homeModule()
        {
            Get("/", p =>
            {
                return View["index.html"];
            });
        }

和 asp net mvc 类似, nancy 的 module 文件名直接影响到 nancy 搜索 view 的路径, 比如 homeModule, nancy 会搜索 views/home/index.html 这个路径。当然也可以通过配置修改 nancy 搜索 view 的方法。

事实上 nancy 的任何组件都可以配置、甚至替换成自己的,所以相当灵活。

新建 views/home/index.html 文件, 随便写一段话,不做赘述。按 F5 调试运行即可。

有两点要注意一下

1.因为咱们不是以 iis 作为宿主来运行( 在Program.cs文件中删掉了 UseIISIntegration 代码) ,所以在 vs 的浏览方式中不能选 IIS Express,要选择项目名称。

2.新添加的 view 文件,vs 不会复制到输出目录,导致运行出错,要改一下输出方式。

部署到 ubuntu

将项目改为 release 模式,然后在 vs 的项目上点右键,选择“打包”命令, vs 会进行编译,最后将 dll 编译到 bin\release\netcore1.1 目录下。

在把文件上传到 ubuntu 之前要对 hello.runtimeconfig.dev.json 做一点修改,这是一个大坑,微软的官方教程中都没提到这块。

这个文件的内容很简单:

"additionalProbingPaths": [

"C:\\Users\\michael\\.nuget\\packages"

]

additionalProbingPaths 就是 nuget 的包路径, 因为我们是在 win 上开发,所以是 %USERPROFILE%\.nuget\packages,要部署到 ubuntu 之前,需修改为 /root/.nuget/packages

将上述文件通过 scp 或者 ftp 等等工具传到 ubuntu 上,比如放在 /home/web/hello 中,然后在 Ubuntu 上执行

dotnet hello.dll 即可

此时只能在远程服务器上用 http://localhost:5000 访问,非常不方便,要想在客户端访问,需要再添加一个反向代理。

添加反向代理

依照主流,咱们选择 nginx

1.安装 nginx

执行 apt install nginx. 不做赘述

2.配置 nginx

编辑/etc/nginx/sites-available/default 文件。

server {

listen 80;

location / {

proxy_pass http://localhost:5000;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection keep-alive;

proxy_set_header Host $host;

proxy_cache_bypass $http_upgrade;

}

}

3.运行 nginx

执行 sudo service nginx start。

大功告成,现在在客户端使用 http://服务器IP/ 即可看到 net core 在 ubuntu 上运行的网站啦。

时间: 2024-11-04 20:40:50

asp net core 跨平台初体验的相关文章

&quot;xaml+cs&quot;桌面客户端跨平台初体验

"Xaml+C#"桌面客户端跨平台初体验 前言 ??随着 .Net 5的到来,微软在 .Net 跨平台路上又开始了一个更高的起点.回顾.Net Core近几年的成果,可谓是让.Net重生了一次. ??Asp .Net Core跨平台解决了Windows服务器昂贵的费用和不能长时间待机的问题,让Asp程序能够跑在Linux甚至Mac上.从博客园里.Net分类可以看到,每天都可以涌现大批Asp .Net Core的技术文章,越来越多的开发者或者公司开始尝试这个船新的跨平台框架. ??然鹅,

Entity Framework Core 在 .NET 4.6 与 .NET Core 的初体验

这篇会使用 Visual Studio 2015 + .NET 4.6.2 建立 Console 程序来尝试 EF Core, 同时也会使用 dotnet?+?.NET Core 1.0?建立 Console 程序来尝试 EF Core. Visual Studio 2015 或?Visual Studio Code 只是整合开发工具,与搭配哪种 Framework(.NET Core 1.0,?.NET Framework 4.6) 是没有限制的. 让我们从熟悉的 Visual Studio

在Azure Container Service创建Kubernetes(k8s)群集运行ASP.NET Core跨平台应用程序

引子 在此前的一篇文章中,我介绍了如何在本地docker环境中运行ASP.NET Core跨平台应用程序(http://www.cnblogs.com/chenxizhang/p/7148657.html),看起来非常不错,不是吗?那么,如果我们希望真正在实际的生产环境去部署和运行这个应用程序,应该怎么做呢? 通常来说,有两种方案可以选择 1. 在目标运行环境(可以是本地的服务器,也可以是云端)申请虚拟机,然后启用docker运行这些应用程序,所有的细节都可以(也必须)由你自己控制. 2. 使用

elmah - Error Logging Modules and Handlers for ASP.NET - 1 : 初体验

elmah(英文):https://code.google.com/p/elmah/ 写作思路:先看结果,然后再说原理 elmah文章基本内容如下 1.安装 2.基本使用 3.详细配置讲解 简介 ELMAH是一个开源项目,其目的是记录和报告在ASP.NET Web应用程序未处理的异常. 早在2004年9月与Atif阿齐兹和斯科特·米切尔发表在MSDN Library,其目的是作为一个概念证明,编写自包含的功能与ASP.NET HTTP模块和处理程序是绝对有可能的,大多有这种特征可能是一篇文章插入

.Net Core SignalR 初体验

前言 Asp.Net SignalR已经出来很久了,但是一直没有静下心来好好看看.昨天花了几个小时的时间看了下.首先借鉴了官方文档,如何搭建一个SignalR的Demo. 参考文章:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/signalr?view=aspnetcore-2.1&tabs=visual-studio SignalR地址:https://github.com/aspnet/SignalR 所以为了快速搭建和体验.N

.NET跨平台初体验

我的个人观点: 我觉得C#是最优美,最万能的编程开发语言,这种观点一抛出或者会引发不少程序员的口水战,当然这只是我个人的观点,没有必要去改变影响其他人的观点,其他人也没必要反驳我,我的这个个人观点只是代表了我对这种C#的喜爱,由始至终! 为什么说C#是最万能的语言,因为我觉得它是至今为止好多平台,好多方向都能用它开发,就拿我自己亲身接触过的来说,C#能XMargin Mono开发三大主流移动平台IOS.Android.WP就更不用说了,如果谈到Unity更是推动了C#的发展,如果不是Unity,

asp.net 使用 MongoDB 初体验

首先:驱动 如果asp.net 想使用MongoDB,.net没有自带的链接类.得用第三方或官方的链接类. 当然有很多种驱动,我就不一一介绍了. 今天我就介绍一个我比较常用的驱动-----MongoDB. 接下来,我们还要去下载MongoDB的C#驱动,它可以让我们在C#中使用MongoDB .下载地址:https://github.com/samus/mongodb-csharp 我们在C#访问MongoDB所需的驱动就是项目MongoDB了.编译这个项目就能得到了,文件名:MongoDB.d

Consul在.Net Core中初体验

简介 在阅读本文前我想您应该对微服务架构有一个基本的或者模糊的了解 Consul是一个服务管理软件,它其实有很多组件,包括服务发现配置共享键值对存储等 本文主要讲解Consul的服务注册服务发现以及集群的配置 参考资料: https://blog.csdn.net/younger_china/article/details/79462530 https://www.cnblogs.com/shanyou/p/6286207.html 服务发现 假设有服务A,B,C.服务A需要调用服务B和C,传统

.Net Core Serverless初体验

什么是Serverless Serverless 是一个当今软件世界中比较新的话题.它并没有一个普遍公认的权威定义,每个人每个企业对它的解释可能都有不同,而 Serverless 正是在这种情况下不断发发展的.但是就算如此,有一些 Serverless 的特征还是被广泛认可的: 服务端的主机和进程完全由供应商管理 可以根据负载进行自动伸缩 按照精确的使用情况来计费,就像水和电一样.(效用计算) 引用掘金,原文地址:https://juejin.im/post/5c68fdbfe51d4539a5