最近因為項目上的需要,使用.net core寫了一個服務,用於指定word模板文件與數據,完成數據的填充(word讀寫使用npoi)與格式轉換(使用aspose,將word轉pdf)。之所以選擇用.net core就是考慮到跨平台部署的問題。
1、遠程至服務器(以172.16.170.75為例), 安裝iis:控制面板-》程序-》啟用或關閉windows功能,把internet information service下的iis管理控制台等都安裝上;
2、安裝.net core運行時:https://dotnet.microsoft.com/download 官網選擇對應版本(注意我們是在服務器上部署,所以要在Run server apps 區域,選擇Download Hosting Bundle):
3、啟動iis管理器,如果在“模塊” 中能看見AspNetCoreModuleV2表示安裝成功;
4、在iis里新建網站:“網站”-》右鍵“添加網站”-》,網站名可自定,便於記憶即可,如“PdfService”;端口號輸入5000(或者其他,根據需要自定)將物理路徑指向pdf服務在windows server上的存放目錄;
5、將網站對應的應用程序池(默認情況下,iis會自動創建一個跟網站同名的應用程序池PdfService)的.NET CLR版本改為無托管代碼;
6、正常情況下,此時服務應該就可以訪問了。可在瀏覽器中輸入地址測試: http://172.16.170.75:5000/api/pdf/1 如果能返回值即可。
8、安裝字體。由於我們的服務使用word作為模板, 用到的字體在服務器上不一定全,因此需要把涉及到的字體安裝到服務器。這個比較簡單,直接copy到服務器上,右鍵安裝即可。
-----踩坑記錄(2021-06-07)---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
某個生產環境:windows server R2版本(服務器不能訪問互聯網),安裝完成后,服務死活不行,報錯500.21。估計是安裝的時候無法安裝完整的引用文件導致的。
最后參考了這篇文章解決: win2012 R2 配置 net core3.1 iis站點發布_lyfclear的專欄-CSDN博客
去微軟官方網站下載離線安裝文件,copy到服務器安裝即可。
-----踩坑記錄(2021-09-17)---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
某個生產環境,突然出現服務不可訪問的情況,報錯500.30,An error occurred while writing to logger(s). 日志提示 事件日志文件已滿。但實際上磁盤空間足夠。
最后解決方案:修改服務對應的應用程序池中的“加載用戶配置文件”為“TRUE”,問題解決。事實上該值默認就是“False”,在其他測試服務器上,該值均為False一直都沒有問題。有點奇怪,先記錄一下。