1. 开发时是在Mac+MySql, 尝试发布时是在SQL2005+Win 2008 (第一版)
在Startup.cs里,数据库连接要改,分页时netcore默认是用offset关键字分页, 如果用SQL2012之前的版本,就要改
//-----Use SqlServer, 默认用offset分页(这个是sql2012版本之后才有的功能) services.AddDbContextPool<CRMContext>( tt => tt.UseSqlServer(Configuration.GetConnectionString("SqlServerConnection"), opt=>opt.UseRowNumberForPaging()) );
2. SQL2005 没有datetime2类型, EFCore默认处理datetime是用datetime2类型
//如果db是SQL2005,没有datetime2的类型.要手工指定 modelBuilder.Entity<Announcement>().Property(t => t.CreateDate).HasColumnType("datetime"); modelBuilder.Entity<Announcement>().Property(t => t.ModifyDate).HasColumnType("datetime");
3. 发布的目录结构和之前的.net不同
4. Kestrel 服务器 如何启动?
我们知道.net core我们可以使用dotnet 命令方式去运行 .net core 应用,这种方式使我们的web不再依赖于iis,实现了跨平台。 我们先了解下命令: > dotnet run [options] [[--] arguments] dotnet run 命令会把我们的项目编译后直接运行,在开发的时候使用,如果是编译好的项目,则使用: > dotnet yourproject.dll [[--] arguments] 如果我们需要配置Urls的话,则只要使用参数--urls="http://*:5005",例如: > dotnet run --urls="http://*:5005" 如果这时候你如此运行,你会发现你的项目并未监听5005端口,因为你还没有对Kestrel进行配置,告诉其读取命令行参数,我们需要在Build host的时候进行如下配置: public static void Main(string[] args) { var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddCommandLine(args) //添加对命令参数的支持 .Build(); var host = WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); host.Run(); } ok,这时候再运行dotnet run命令吧!
5. 如何发布到IIS7?
安装 DotNetCore.2.0.5-WindowsHosting(貌似我的win2008安装不了,要2008R2才能安装), 安装DotNetCore SDK, 安装VC 2015 Redist
http://www.cnblogs.com/tianma3798/p/6947287.html
http://www.cnblogs.com/a-dou/p/6685582.html