• .NET跨平台:在Ubuntu上用自己编译的dnx运行ASP.NET 5示例程序


    在 Linux Ubuntu 上成功编译 dnx 之后,会在 artifacts/build/ 文件夹中生成 dnx-coreclr-linux-x64/ 与 dnx-mono/ 这2个文件夹,前者是基于 coreclr 的 dnx ,后者是基于 mono 的 dnx 。

    这篇博文中我们将使用基于 coreclr 的 dnx 运行 ASP.NET 5 示例程序,而 dnx 以及它所需的一切都在 dnx-coreclr-linux-x64/ 的 bin/ 文件夹中,所以只需通过下面的命令就可以运行一个 ASP.NET 5 应用程序。

    /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel

    下面我们分别通过三种类型(Console/Web/MVC)的 ASP.NET 5 示例程序实际体验一下。示例程序来自 github.com/aspnet/Home/ 。

    (一)

    第一个示例程序是 ConsoleApp(ASP.NET 5 控制台应用程序)

    using System;
    
    public class Program
    {
        public static void Main()
        {
            Console.WriteLine("Hello World");
        }
    }

    用以下命令运行这个 ASP.NET 5 控制台应用程序(无需Web服务器):

    cd /data/git/Home/samples/latest/ConsoleApp
    dnu restore
    /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . run

    运行成功!结果如下:

    Hello World

    (二)

    第二个示例程序是 HelloWeb (未使用 MVC 的 ASP.NET 5 Web 应用程序)

    using Microsoft.AspNet.Builder;
    
    namespace HelloWeb
    {
        public class Startup
        {
            public void Configure(IApplicationBuilder app)
            {
                app.UseStaticFiles();
                app.UseWelcomePage();
            }
        }
    }

    用以下命令运行程序(需要Web服务器,用的是Kestrel)

    cd /data/git/Home/samples/latest/HelloWeb
    dnu restore /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel

    运行失败!出现下面的错误:

    System.InvalidOperationException: Unable to load libuv. Make sure libuv is installed and available as libuv.so.1

    这是由于 Unbuntu 上没有安装 libuv,而 Kestrel 是基于 libuv 的。所以先要安装 libuv,安装的命令如下:

    git clone https://github.com/libuv/libuv.git
    sh autogen.sh
    ./configure
    make
    make install
    sudo ln -s /usr/local/lib/libuv.so /usr/lib/libuv.so.1

    继续用 dnx . kestrel 命令运行,这次运行成功!

    # /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel
    Started

    然后通过浏览器访问“主机名:端口号”,就会看到 HelloWeb 输出的默认页面:

     (三)

    第二个示例程序是 HelloMvc (基于 ASP.NET 5 的 MVC 示例程序) 

    using Microsoft.AspNet.Builder;
    using Microsoft.Framework.DependencyInjection;
    
    namespace HelloMvc
    {
        public class Startup
        {
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddMvc();
            }
    
            public void Configure(IApplicationBuilder app)
            {
                app.UseErrorPage();
    
                app.UseMvcWithDefaultRoute();
    
                app.UseWelcomePage();
            }
        }
    }

    用以下命令运行这个 ASP.NET 5 MVC 示例应用程序:

    cd /data/git/Home/samples/latest/HelloMvc
    dnu restore
    /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel

    运行成功!

    # /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel
    Started

    然后用浏览器访问,就可以看到 MVC 输出的页面:

    三个 ASP.NET 5 示例程序运行成功!

    虽然这三个示例程序只是微不足道的小玩具,但将它们在最新的 .NET 跨平台的三驾马车 coreclr/corefx/dnx 上运行起来,可以实际体会一下 .NET 跨平台正在一步一步向前。而且基于 .NET 跨平台的这一微步,我们可以尝试在上面运行一些很简单的站点。

  • 相关阅读:
    根据IP获取省市 .
    支付宝接口使用步骤及总结
    最新调用优酷视频 免前置广告的方法
    SQL新增数据取表主键最新值
    JS获取地址栏参数
    图片(img标签)的onerror事件
    prototype.js的Ajax对IE8兼容问题解决方案
    基于.net技术的 Rss 订阅开发
    JS获取Dropdownlist选中值
    阿里云tomcat启动慢
  • 原文地址:https://www.cnblogs.com/dudu/p/4585459.html
Copyright © 2020-2023  润新知