.net Core3.1 webapi前后端一起部署到同一網站遇到的問題


一、怎么把webapi部署到iis的問題

webapi部署到iis最主要的就是安裝iis運行時,說真的看的很暈,剛開始也分清楚,然后各種的都裝了一次,應該是裝下面這個鏈接地址的,有60多M

https://download.visualstudio.microsoft.com/download/pr/5bed16f2-fd1a-4027-bee3-3d6a1b5844cc/dd22ca2820fadb57fd5378e1763d27cd/dotnet-hosting-3.1.4-win.exe

安裝完成后打開你的iis,然后選擇本地服務器主頁中的"模塊"

在打開的模塊中看到有AspNetCoreModuleV2,說明就是安裝成功了。

 

 如果沒有出來,那就是你下載的.net core運行時不對,我這里安裝的是.net core 3.1

 

二、新建應用程序池

新建一個應用程序池,選擇無代碼托管、集成,標識設置為networkService

 

 

三、發布webapi

關於這一步,網上的教材有很多,最主要的是你要知道它發布到哪個文件夾下面了,到時我們要復制出來用的,一般是在publish下面

 

 

四、建立網站

 在iis中建立網站,不是建立應用程序或虛擬目錄,感覺這個webapi一定得要有端口,哪個端口不常用就選一個吧

 

 設置好以后基本上就能訪問了,但是你打開后卻發現各種原因的打不開,但是一個最重要的原因是沒有拷xml文件,

它在你項目的bin\Debug目錄下,找到復制過來就可以了。

在這里我使用了swagger,但是發現通過端口一直無法訪問,后來忘記是需要輸入localhost:8000/swagger/index.html才能訪問的,着急了很容易忘記它。

五、把前端vue生成的和webapi放到一起

能獨立分開部署的不差技術,咱們隨便玩玩的肯定是要把前端構建好的項目和后端放到一個網站里是最省事的了,這里說下遇到的問題

在webapi使用vs2019調試時沒有問題,vue在vscode中進行調試時也沒有問題,但是它倆部署到iis后就不行了,無法訪問了,說是跨域還是什么的,那就只好把他倆放在一個網站里了,這樣子就不會存在跨域的問題了。

本以為直接把vue生成的文件放到webapi網站目錄下就可以了,但是你會發現它無法訪問,根本就打不開,網上找了找資料,說是需要在webapi中配置靜態文件,可以看大神寫的這個貼子:

https://www.cnblogs.com/Vam8023/p/10670741.html    

.net core webapi 前后端開發分離后的配置和部署

最后最主要的就是要在stratup.cs的Configure事件中增加下面的代碼就可以了。

            DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
            defaultFilesOptions.DefaultFileNames.Clear();
            defaultFilesOptions.DefaultFileNames.Add("index.html");
            app.UseDefaultFiles(defaultFilesOptions);

            StaticFileOptions staticFileOptions = new StaticFileOptions();
            staticFileOptions.FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(@"E:\KaoshiWebAPI\wwwroot\");
            app.UseStaticFiles(staticFileOptions);//開啟靜態文件

試一下,可以打開了,可以訪問了,也可以調用webapi了,同一網站也不存在跨域的問題了。


 

由於是在一台電腦上調試和部署, 感覺給開發帶來了一些不便


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM