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 上运行的网站啦。


















本文转自xsster51CTO博客,原文链接:http://blog.51cto.com/12945177/1950788 ,如需转载请自行联系原作者


相关文章
|
10天前
|
数据可视化 开发工具 C#
.NET开源、免费、跨平台的Git可视化管理工具
俗话说得好“工欲善其事,必先利其器”,合理的选择和使用可视化的管理工具可以降低技术入门和使用的门槛。今天大姚给大家分享一款.NET Avalonia开源、免费、跨平台、快速的Git可视化管理工具:SourceGit。
|
10天前
|
数据可视化 网络协议 C#
C#/.NET/.NET Core优秀项目和框架2024年3月简报
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯🔔)。
|
3月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
68 0
|
3月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
37 0
|
3月前
|
开发框架 JavaScript .NET
ASP.NET Core的超级大BUG
ASP.NET Core的超级大BUG
41 0
|
1月前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(持续更新)
C#/.NET/.NET Core拾遗补漏合集(持续更新)
|
1月前
|
开发框架 中间件 .NET
C# .NET面试系列七:ASP.NET Core
## 第一部分:ASP.NET Core #### 1. 如何在 controller 中注入 service? 在.NET中,在ASP.NET Core应用程序中的Controller中注入服务通常使用<u>依赖注入(Dependency Injection)</u>来实现。以下是一些步骤,说明如何在Controller中注入服务: 1、创建服务 首先,确保你已经在应用程序中注册了服务。这通常在Startup.cs文件的ConfigureServices方法中完成。例如: ```c# services.AddScoped<IMyService, MyService>(); //
60 0
|
2月前
|
开发框架 前端开发 .NET
福利来袭,.NET Core开发5大案例,30w字PDF文档大放送!!!
为了便于大家查找,特将之前开发的.Net Core相关的五大案例整理成文,共计440页,32w字,免费提供给大家,文章底部有PDF下载链接。
32 1
福利来袭,.NET Core开发5大案例,30w字PDF文档大放送!!!
|
2月前
|
算法 BI API
C#/.NET/.NET Core优秀项目和框架2024年1月简报
C#/.NET/.NET Core优秀项目和框架2024年1月简报
|
3月前
|
IDE 前端开发 JavaScript
【C#】C# 开发环境配置(Rider 一个.NET 跨平台集成开发环境)
【1月更文挑战第26天】【C#】C# 开发环境配置(Rider 一个.NET 跨平台集成开发环境)

相关实验场景

更多