唐山网站建设托管,服装箱包网站建设,消防电气火灾监控系统网站开发,wordpress积分系统升级完类库项目#xff0c;第二篇#xff0c;我们来升级ASP.Net Core项目 修改global.json与project.json 这里可以参照#xff0c;升级.Net Core RC2的那些事#xff08;一#xff09; 这里补充一点就是如果你觉得这样修改复杂#xff0c;你完全可以新建一个项目#x… 升级完类库项目第二篇我们来升级ASP.Net Core项目 修改global.json与project.json 这里可以参照升级.Net Core RC2的那些事一 这里补充一点就是如果你觉得这样修改复杂你完全可以新建一个项目把这两个文件拷贝过来再加上自己引用过的包也是可以的看你觉得那种方法更简单点 增加Program入口类 Program.cs: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class Program { public static void Main( string [] args) { var host new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartupStartup() .Build(); host.Run(); } } 并移除Startup.cs中的 1 2 // Entry point for the application. public static void Main( string [] args) WebApplication.RunStartup(args); 修改类名和命名空间名 将所有 Microsoft.AspNet.* 的命名空间修改为 Microsoft.AspNetCore.* 参照下表修改对应的类名 旧类新类IWebApplicationBuilderIWebHostBuilderWebApplicationBuilderWebHostBuilderIWebApplicationIWebHostWebApplicationWebHostWebApplicationOptionsWebHostOptionsWebApplicationDefaultsWebHostDefaultsWebApplicationServiceWebHostServiceWebApplicationConfigurationWebHostConfiguration 如果你有使用全局环境变量也请对照下表修改 Old prefixNew prefixASPNET_WEBROOTASPNETCORE_WEBROOTASPNET_SERVERASPNETCORE_SERVERASPNET_APPASPNETCORE_APPLICATIONNAMEASPNET_ENVIRONMENTASPNETCORE_ENVIRONMENTASPNET_DETAILEDERRORSASPNETCORE_DETAILEDERRORS 修改Logging 如果你有使用日志功能需要修改下日志等级的配置具体在 appsettings.json 例如 1 2 3 4 5 6 7 8 Logging : { IncludeScopes : false , LogLevel : { Default : Debug , System : Information , Microsoft : Information } }, 具体请对照下表 Old LevelsNew LevelsCriticalCriticalErrorErrorWarningWarningInformationInformationVerboseDebugDebugTrace 关于PostAsJsonAsync与ReadAsAsync 如果以前有使用 Microsoft.AspNet.WebApi.Client 的当然现在也是可以直接引用这个包来实现Web API之间的对接的 但我在实战中发现也许是因为引用包之间的版本冲突会有诡异的异常于是我自己实现了一个Helper也分享给大家 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 public static class HttpClientHelper { public static async TaskT ReadAsAsyncT( this HttpContent content) { return JsonConvert.DeserializeObjectT(await content.ReadAsStringAsync()); } public static async TaskHttpResponseMessage PostAsJsonAsyncT( this HttpClient client, string url, T model) { SetHeader(client); return await client.PostAsync(url, SetContent(model)); } private static StringContent SetContentT(T model) { return new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, application/json ); } private static void SetHeader(HttpClient client) { client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue( application/json )); client.DefaultRequestHeaders.AcceptCharset.Add( new StringWithQualityHeaderValue( utf-8 )); } public static async TaskHttpResponseMessage PutAsJsonAsyncT( this HttpClient client, string url, T model) { SetHeader(client); return await client.PutAsync(url, SetContent(model)); } } 关于文件上传保存 以前有.SaveAsAsync这样便捷的扩展方法保存的现在没有了或者说藏到了哪里目前找不到了于是就需要手写 相关的代码片段 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (model.picdata ! null ) { var extName ContentDispositionHeaderValue.Parse(model.picdata.ContentDisposition).FileName.Trim( ); int i extName.LastIndexOf( . ); extName extName.Substring(i); string fileName Guid.NewGuid() extName; var filePath _hostingEnvironment.WebRootPath \upload\ fileName; //保存文件 using ( var fileStream new FileStream(filePath, FileMode.Create)) { var inputStream model.picdata.OpenReadStream(); await inputStream.CopyToAsync(fileStream); } //await model.picdata.SaveAsAsync(filePath); } 本人的项目中就这一处需要保存文件的就不封装了你喜欢也可以自己封装下 关于System.Drawing 由于项目中需要使用图片处理生成二维码好多大神建议另外建项目调用但我想做在一个项目中故有此一段 首先ASP.Net Core项目是不支持System.Drawing的如果需要使用则需要修改成纯 net461 的项目这里需要修改一下project.json 1、删除 Microsoft.NETCore.App 配置节 1 2 3 4 Microsoft.NETCore.App : { version : 1.0.0-rc2-3002702 , type : platform }, 2、修改 frameworks 配置节只保留 net461 项 1 2 3 4 5 6 7 8 9 10 11 frameworks : { net461 : { frameworkAssemblies : { System.Drawing : 4.0.0.0 }, dependencies : { ThoughtWorks.QRCode : 1.1.0 , Microsoft.NETCore.Platforms : 1.0.1-rc2-24027 } } }, 这样修改完成后就可以在项目中使用 System.Drawing 命名空间了 副作用 这样修改后项目是不能在CoreCLR上跑的Windows环境下不会存在问题Linux下则需要配置Mono环境才可以 关于Session 现在光在 ConfigureServices 方法中加 services.AddSession(); 是不够的实际使用时会报错 还需要在 Configure 方法中加 app.UseSession(); 发布到IIS 通过VS发布 现在你可以像MVC5那样通过 右键菜单的 发布 功能用Web Deploy来发布到IIS需要注意的是目前这个工具对中文的支持不是很好所以不要使用中文的项目名哟 通过cli发布 你也可以通过以下命令获得发布文件 1 dotnet publish -c release 然后把获得的文件通过FTP等途径上传到服务器 PS:此命令需要在 project.json 的同级目录下运行 IIS配置 IIS绑定的目录应该是最多DLL的那一层而不是以前RC1的wwwroot 应用程序池中设置 无托管代码 等这些基本和RC1一致 其他补充 如果你的项目存在Areas默认是不会发布出去的此时需修改project.json的publishOptions配置节例如 1 2 3 4 5 6 7 8 9 publishOptions : { include : [ wwwroot , Views , Areas/Admin/Views , appsettings.json , web.config ] }, 相关文章 ASP.NET Core 1.0 入门——了解一个空项目ASP.NET Core 1.0 部署 HTTPS .NET Framework 4.5.1.NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介云服务器下ASP.NET Core 1.0环境搭建包含mono与coreclr使用VS Code开发ASP.NET Core 应用程序dotnet run是如何启动asp.net core站点的ASP.NET Core提供模块化Middleware组件“dotnet restore和dotnet run都做了些什么探秘 dotnet run 如何运行 .NET Core 应用程序.NET Portability Analyzer 已开源ASP.NET Core的配置1读取配置信息ASP.NET Core的配置2配置模型详解.NET Core 1.0 RC2 历险之旅使用VS Code开发 调试.NET Core 应用程序让我们Core在一起ASP.NET Core .NET Core.NET Core VS Code 环境配置官方博客明确了 .NET Core RC2/RTM 时间表.NET Core全新的配置管理[共9篇]利用记事本创建一个ASP.NET Core RC2 MVC应用微软.NET 正式劈腿成功横跨所有平台.NET Core 1.0 CentOS7 尝试解读发布.NET Core RC2 and .NET Core SDK Preview 1[.NET Core].NET Core R2安装及示例教程 原文地址http://blog.lishewen.com/post/to-upgrade-thenet-core-rc2-(2)-those-things-to-upgrade-the-core-program-at-aspnet .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注 赞赏 人赞赏