.net Core 踩坑記:生成、發佈、IIS、調試

踩了一晚的坑,本想詳細寫下的,剛纔回覆同事消息花了些時間,要睡覺了,簡短寫下吧前端

 

一、發佈java

.net core不用不停地編譯了,只要保存便可,配合dotnet watch run就行,這玩意會實時編譯,相似java的jrebeljson

反而是手動編譯要報錯,若是IIS是指向開發目錄,會報不能覆蓋文件,就是生成的快捷鍵要去掉了,我原先是設置Ctrl + Shift + S是生成,由於原先改後端要不停生成,改前端用生成也會保存,因此就設置這個快捷鍵。如今要換回【所有保存】了後端

 

二、發佈架構

發佈到IIS,據說不能覆蓋,也會報錯。只能發佈到一個目錄,再手動複製過去才能覆蓋,直接用發佈去覆蓋是不行的。網上這麼說的,我沒試過。app

 

三、IISui

以前寫過,直接用IIS是不行的,要裝SDK什麼的,網上有。url

裝完後,直接指向開發目錄也是不行的,會報不能覆蓋。指向發佈目錄是能夠,但總不能改個字就去發佈一下吧(並且還可能也是沒法覆蓋)spa

要把Web.Config裏命令改爲dotnet,參數改爲watch run,這樣就能夠了,還有個日誌的參數能夠開起來,記錄文本日誌,便於報錯時排查問題。日誌若是放在某目錄下,那個目錄要先建好,它不會直接建。.net

有了watch run,就能夠保存後即生效(原理雖然也是dotnet停了再啓動,但很是快,和原先生成同樣,原先生成DLL原本也不快)

 

IIS能夠直接配端口(至關於反向代理),若是是命令行要配端口,要改一行代碼,使用appsettings.json裏的配置便可,如:"urls": "http://localhost:95;"

public class Program { public static void Main(string[] args) { var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true) .Build(); WebHost.CreateDefaultBuilder(args) .UseConfiguration(config) .UseStartup<Startup>() .Build().Run(); } }

 

四、調試

附加到進程,用了網上寫.cmd來啓動(不用IIS)的方法,也是不行,仍然是好多個dotnet進程,我開了個WEB和API,都有八九個進程。。。都不知要附加哪一個,不過附加第一個或第二個基本就能夠,不知這個有沒有排序,仍是靠運氣。

用IIS的話,也會有多個,但會好一些,通常一個項目有兩個(我開了WEB和API後有四個),也是靠猜,基本也是前兩個,搜了一圈沒有好辦法。

 

折騰一晚後,算是對各個配置項有了些理解,看網上下載的代碼,其它的都是正常的業務邏輯了,.net core就是開頭這些配置弄清楚,能正常開發,就能夠了,仍是有不少不一樣的,總體架構都不同了,全部想配置的地方也不同了,主要是配置項,語法徹底同樣

相關文章
相關標籤/搜索