红联Linux门户
Linux帮助

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

发布时间:2016-01-02 15:24:42来源:linux网站作者:dudu

在 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(https://github.com/aspnet/Home/tree/dev/samples/latest/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(https://github.com/aspnet/Home/tree/dev/samples/latest/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 输出的默认页面:

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

 
(三)第二个示例程序是 HelloMvc(https://github.com/aspnet/Home/tree/dev/samples/latest/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 输出的页面:

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

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

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


.NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序:http://www.linuxdiyf.com/linux/16989.html

在CentOS上部署基于dnx/coreclr的ASP.NET 5应用程序:http://www.linuxdiyf.com/linux/16987.html

.NET跨平台:在Linux上基于ASP.NET 5用EF7生成数据库:http://www.linuxdiyf.com/linux/16985.html

Ubuntu 14.04 LTS下APACHE支持ASP.NET MVC5:http://www.linuxdiyf.com/linux/14155.html

Linux服务器上,用ASP.NET生成中文图片的要点:http://www.linuxdiyf.com/linux/13689.html