.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,那一刻的感受好極了@@

相關文章
相關標籤/搜索