.NET跨平台之旅:升级至ASP.NET 5 RC1,Linux*问SQL Server数据库

时间:2022-09-10 12:30:01

今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步。

紧跟这次RC1的发布,我们成功地将运行在Linux上的示例站点(http://about.cnblogs.com)升级到了ASP.NET 5 RC1,并且增加了数据库访问功能——基于Entity Framework 7 RC1访问SQL Server数据库。

示例站点页面左侧的导航是从数据库读取数据动态加载的,数据库服务器用的是阿里云RDS(注:创建数据库时需要将支持的字符集设置为SQL_Latin1_General_CP1_CS_AS,这是针对SqlClient中一个bug的临时解决方法)。数据库表是通过EF迁移功能生成的,所用命令如下:

dnx ef migrations add FirstMigration
dnx ef database update

数据库连接字符串是从config.json中读取的。

后端Web服务器用的是kestrel,前端Web服务器用的是阿里云负载均衡,使用中发现一个很奇怪的问题:浏览器直接访问kestrel,速度飞快;而访问阿里云负载均衡,页面虽然显示出来,但页面一直牌加载状态,长达1分钟。

.NET跨平台之旅:升级至ASP.NET 5 RC1,Linux*问SQL Server数据库

怀疑是阿里云负载均衡与kestrel在TCP通信上存在某些问题,这个问题暂时没有找到解决方法(更新:这是kestrel的一个bug,详见 Don't wait to consume the entire request body for Connection: close requests )。

SQL Server数据库终于能跨平台访问了,接下来就看kestrel的稳定性了。如果kestrel稳定,我们就开始将一些实际使用的小站点迁移至ASP.NET 5,并部署在Linux服务器上。

下面分享一下这个示例ASP.NET 5站点的主要代码。

文件结构:

.
├── config.json
├── Controllers
│   ├── AboutController.cs
│   └── HomeController.cs
├── Data
│   ├── EfDbContext.cs
│   ├── ITabNavRepository.cs
│   └── TabNavRepository.cs
├── Extensions
│   └── HtmlHelperExtensions.cs
├── Models
│   └── TabNav.cs
├── project.json
├── project.lock.json
├── Startup.cs
├── Views
│   ├── About
│   │   ├── Ad.cshtml
│   │   ├── Contact.cshtml
│   │   ├── Intro.cshtml
│   │   └── Job.cshtml
│   ├── Shared
│   │   └── _Layout.cshtml
│   └── _ViewStart.cshtml
└── wwwroot

project.json文件的内容:

{
"webroot": "wwwroot",
"exclude": ["wwwroot"],
"commands":{
"kestrel": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.Kestrel --server.urls http://*:8001",
"ef": "EntityFramework.Commands"
},
"dependencies":{
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-*",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.Commands": "7.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"System.Runtime.Serialization.Primitives": "4.0.10-*",
"System.Net.Security":"4.0.0-*"
},
"frameworks":{
"dnxcore50": {},
}
}

Startup.cs中的代码:

using System;
using System.Linq;
using Microsoft.AspNet.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Data.Entity;
using CNBlogs.AboutUs.Data;
using Microsoft.Dnx.Runtime;
using Microsoft.Extensions.PlatformAbstractions;
using Microsoft.Extensions.Configuration;
using System.Data.SqlClient;
using Microsoft.Extensions.Logging; namespace CNBlogs.AboutUs.Web
{
public class Startup
{
public Startup(IApplicationEnvironment appEnv)
{
IConfigurationBuilder builder = new ConfigurationBuilder()
.SetBasePath(appEnv.ApplicationBasePath)
.AddJsonFile("config.json", false);
Configuration = builder.Build();
} public IConfiguration Configuration { get; set; } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
app.UseDeveloperExceptionPage();
app.UseMvcWithDefaultRoute();
app.UseStaticFiles();
app.UseRuntimeInfoPage();
} public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(); services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<EfDbContext>(options =>
{
options.UseSqlServer(Configuration["data:ConnectionString"]);
}); services.AddTransient<ITabNavRepository, TabNavRepository>();
}
}
}

.NET跨平台之旅:升级至ASP.NET 5 RC1,Linux*问SQL Server数据库的更多相关文章

  1. ASP&period;NET MVC Identity 使用自己的SQL Server数据库

    之前在网上看到的一篇后来找不到了,现在自己记录一下. 1.在web.config中添加一个数据库连接. <add name="dataContext" connectionS ...

  2. &period;NET跨平台之旅:基于&period;NET Core改写EnyimMemcached,实现Linux*问memcached缓存

    注:支持 .NET Core 的 memcached 客户端 EnyimMemcachedCore 的 NuGet 包下载地址:https://www.nuget.org/packages/Enyim ...

  3. 如何用asp&period;net MVC框架、highChart库从sql server数据库获取数据动态生成柱状图

    如何用asp.net MVC框架.highChart库从sql server数据库获取数据动态生成柱状图?效果大概是这样的,如图: 请问大侠这个这么实现呢?

  4. ASP&period;NET Excel导入到SQL Server数据库

    本文转自:http://www.cnblogs.com/lhking/archive/2009/06/08/1499002.html 提供把Excel里的数据导入到SQL Server 数据库,前提是 ...

  5. 采用Opserver来监控你的ASP&period;NET项目系列&lpar;二、监控SQL Server与Asp&period;Net项目&rpar;

    前言 之前有过2篇关于如何监控ASP.NET core项目的文章,有兴趣的也可以看看. 今天我们主要来介绍一下,如何使用Opserver监控我们的SQL Server 和ASP.NET项目的异常监控 ...

  6. C&num;面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp&period;Net MVC4中的全局过滤器 C&num;语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

  7. TransactionScope事务处理方法介绍及&period;NET Core中的注意事项 SQL Server数据库漏洞评估了解一下 预热ASP&period;NET MVC 的VIEW &lbrack;AUTOMAPPER&rsqb;反射自动注册AUTOMAPPER PROFILE

    TransactionScope事务处理方法介绍及.NET Core中的注意事项   作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.ht ...

  8. 用ASP&period;NET&sol;C&num;连接Access和SQL Server数据库

    连接Access 首先看一个例子代码片断:程序代码: ------------------------------------------------------------------------- ...

  9. ASP调用存储过程访问SQL Server

     ASP调用存储过程访问SQL Server 2011-02-15 10:22:57 标签:asp 数据库 sQL 存储过程 Server ASP和存储过程(Stored Procedures)的文章 ...

随机推荐

  1. LeetCode Minimum Height Trees

    原题链接在这里:https://leetcode.com/problems/minimum-height-trees/ 题目: For a undirected graph with tree cha ...

  2. Oracle Essbase入门系列(四)

    成员存储类型 除了大纲计算,维度成员的另一项重要属性是存储类型,存储类型决定维度成员相关单元格的物理存储方式.在维库中编辑成员的[Data Storage]属性,下拉菜单中可选的5种,再加上Share ...

  3. action中result没有值

    action中result没有值,访问action会输出action中的所有数据,输出类型为.action类型 .

  4. 在FreeBSD上搭建Mac的文件及time machine备份服务

    上周将工作用电脑由公司配备的台式机切换到自己低配的macbook air上面,小本本的128G SSD远远不能满足工作的储存需要,但又不舍得入手昂贵的AirPort Time Capsule,于是考虑 ...

  5. 数位dp D - Count The Bits

    题目:D - Count The Bits 博客 #include <cstdio> #include <cstring> #include <cstdlib> # ...

  6. BZOJ&period;4910&period;&lbrack;SDOI2017&rsqb;苹果树&lpar;树形依赖背包 DP 单调队列&rpar;

    BZOJ 洛谷 \(shadowice\)已经把他的思路说的很清楚了,可以先看一下会更好理解? 这篇主要是对\(Claris\)题解的简单说明.与\(shadowice\)的做法还是有差异的(比如并没 ...

  7. Spring 使用javaconfig配置aop

    1.在xml中需要配置自动代理 /** * */ package com.junge.demo.spring.dao; import org.springframework.context.annot ...

  8. vim 命令学习(基础篇)

    [1]三种模式 vi的三种模式:命令模式.末行模式.编辑模式. 三种模式相互切换逻辑与命令图: 1.命令模式是vi的默认模式(即每打开一个文件时的初始模式). 2.命令模式切换至末行模式,末行模式切换 ...

  9. 遍历DOM树,获取父节点

    通过获取父节点,还可以获取父节点的父节点. 有3个常用方法: 方法  说明  parent()  选取父节点  parents()  选取所有父节点  parentsUntil("div&q ...

  10. RNN以及LSTM的介绍和公式梳理

    前言 好久没用正儿八经地写博客了,csdn居然也有了markdown的编辑器了,最近花了不少时间看RNN以及LSTM的论文,在组内『夜校』分享过了,再在这里总结一下发出来吧,按照我讲解的思路,理解RN ...