.NET 4.5+项目迁移.NET Core的问题记录

.NET 4.5+项目迁移.NET Core的问题记录

这几天试着把目前的开发框架迁移到新的.net core平台,中间遇到的问题在这里简单记录一下。git

迁移过程遇到的最大的问题IOC容器。我目前使用的IOC容器Castle Windsor尚未.net core版本的实现,虽然core自己提供有注入功能,但我想在代码上尽可能保持与.NET Framework的兼容,最后仍是选择使用第三方容器Autofac,不过在容器上层作了隔离,也就是能够随时替换掉IOC。
关于第三方容器接管.net core的注入实现,官方文档有介绍,也能够参考autofac的实现
https://github.com/autofac/Autofac.Extensions.DependencyInjectiongithub

第二个问题是.net core没有App Domain,不能像之前那样方便的加载项目程序集,替换方法是手工扫描BIN目录,再经过AssemblyLoadContext加载到内存。不过遇到一个问题是在加载入口项目DLL的时候,会提示没法加载,目前我是经过Assembly.GetEntryAssembly()后简单粗暴的排除掉。哪位朋友知道有更好的方法,劳烦告知一下。redis

其余方式:
var assemblies = DependencyContext.Default.RuntimeLibraries;//须要引用程序集
...windows

第三个问题是不少Type的反射接口不存在了,能够经过Type.GetTypeInfo()获取,不过要额外引用扩展库。服务器

第四个问题是在发布到服务器IIS以后,出现下面的异常:app

HTTP Error 502.5 - Process Failure

Common causes of this issue:
The application process failed to start.
The application process started but then stopped.
The application process started but failed to listen on the configured port.

WINDOWS系统日志:框架

Failed to start process with commandline '"dotnet" .\Portal.dll', ErrorCode = '0x80070002'.

首先说一下,在部署IIS的时候,须要在windows server上安装文件DotNetCore.1.0.1-WindowsHosting.exe,它会在IIS上添加一个aspnetcore module,托管net core的运行。新建站点后将应用程序池修改成无托管模式便可。就在这个地方我遇到上边的错误,页面一直提示502没法打开,端口和编译平台都没有问题。
网上找了不少方法试事后都没有效果,最后感受仍是hosting的问题,并且我在安排hosting文件的时候的确报过一次错,后来是用右键管理员运行安装完成的,而后到iis模块下果然没有找到aspnetcore module。
卸载后重装又出现了第一次的问题,安装失败。最后在stackoverflow上看到一句话this

Make sure when you install the DotNetCore WindowsHosting you have access to the internet because the installer download the VS 2015 resist x64 as dependency.

VS 2015 resist x64 - http://download.microsoft.com/download/8/c/b/8cb4af84-165e-4b36-978d-e867e07fc707/vc_redist.x64.exe

果断下载安装后再运行WindowsHosting就没再报错了,这里还须要重启一下服务器。.net

https://aka.ms/dotnetcore_windowshosting_1_1_0日志

手指在键盘上飞快的敲下那一串域名,点击Enter,那一刻的感受好极了@@

相关文章
相关标签/搜索