2021年1月9日 星期六

初經驗--把.net core 專案發佈到他台主機IIS上遇到的問題

當你把彼端IIS & MSSQL express裝好了,並且也把「安裝 ASP.NET Core 模組/裝載套件組合」 裝好後,檔案也搬好了,你以為這樣就打完收工了?不,我們奇妙的冒險旅程才正要開始呢, 首你,把你先建立好的web & applicatoin 設好,port bind 也設了,用本機的網址去查驗一下 localhost:5000 結果出現這畫面....
去IIS的log查也沒有什麼具體的說明,只會讓你懷疑人生罷了 你需要一些踢過鐵板的人的經驗,參考....這個
看來看去,好像只有第四個選項「stdoutLogEnabled 」才是那一窗門,是的,那就打開他吧
--------------web.config-------------------------
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\XXXXX.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
---------------------------------------
改好改滿,重啟那個站台,再次request看看你的站台,你就會在你的.net core網站目錄下看到「logs」目錄,裡面有log檔了.....
--------------------------------
Unhandled exception. System.FormatException: Could not parse the JSON file.
 ---> System.Text.Json.JsonReaderException: 'S' is an invalid escapable character within a JSON string. The string should be correctly escaped. LineNumber: 10 | BytePositionInLine: 47.
   at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
   at System.Text.Json.Utf8JsonReader.ConsumeStringAndValidate(ReadOnlySpan`1 data, Int32 idx)
   at System.Text.Json.Utf8JsonReader.ConsumeString()
-------------------------------
喏,看到了吧,是json檔設定有問題了,在佈署的資料夾中看到的json檔
最可疑的就是「appsettings.json」
-----------------------------------------










----------------------------------------
又是萬惡的斜線問題了,再加一條斜線改好後,重啟IIS那個.net core web後,其本上你用localhost:5000
去看,就是正常了








....那有用到database的部分,如何設定?
你除了是把.net core web 的application pool的identity設定為NetowrkService之外,
也要有sql server security & login的設定配合才行
參考這裡比較快 

解決:使用者’IIS APPPOOL\ASPNET v4.0’的登入失敗

可能比較正規的做法是這樣....

註 2021/02/23,不必如何大費周章,直接在appsettings.json改,
在connection string中,加入「;Integrated Security=false;」這屬性就是了

以上,大家加油了
(.net core 效能不錯的樣子,真香啊.....)





2 則留言:

  1. 我朋友有一個網站 從舊主機到新主機之後,部署到IIS之後wwwroot底下的img,css,js都不能正常載入,請問您知道可能是什麼原因嗎

    回覆刪除
    回覆
    1. 試看看這些設定吧(sorry,最近都在寫別的東西)
      https://stackoverflow.com/questions/10512053/css-images-js-not-loading-in-iis

      刪除