2017-09-13 90 views
0

According to this topic我試圖發佈和託管我的.NET核心應用程序。當我嘗試從我的API(example.com/pets/users)使用GET請求檢索數據時,我收到500內部服務器錯誤。 example.com/pets是我的API發佈的URL。ASP.NET核心RESTfull API託管 - 500內部服務器錯誤

我的webconfig看起來是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" /> 
    </handlers> 
    <aspNetCore processPath="dotnet" arguments=".\Pets.Api.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" /> 
    </system.webServer> 
</configuration> 

我相信這是非常好的。

標準輸出日誌中這樣說:

警告: Microsoft.Extensions.DependencyInjection.DataProtectionServices [59]

無論用戶個人資料,也可HKLM註冊表。使用臨時密鑰庫。當 應用程序退出時,受保護的數據將不可用。

警告: Microsoft.AspNetCore.DataProtection.Repositories.EphemeralXmlRepository [50]

使用一個內存庫。密鑰不會被持久存儲。

託管環境:生產

內容根路徑:d:\ HostingSpaces \ xardaslord \ example.com \ wwwroot的\寵物

現在監聽:http://localhost:13556

應用開始。按下Ctrl + C關閉。

究竟是什麼錯誤?我檢查了我的遠程數據庫連接,它是正確的。

我真的很感激,如果有人可以幫助我在這裏。

+1

沒有很多在這裏繼續下去。根據我的經驗,當您從本地運行到開發模式以託管於生產模式時,可能會出現配置項丟失的問題。你在本地使用用戶機密嗎?如果你這樣做,你將不會有他們在生產。這只是一個例子... – GlennSills

+0

我改變了應用程序池,以無託管代碼,現在當我嘗試做GET請求'example.com /寵物/ users'我得到403 - 禁止訪問:訪問被拒絕。 – XardasLord

+0

與應用程序池關聯的應用程序標識是什麼?它是否具有讀取部署文件夾的權限? – GlennSills

回答

0

我解決了這個問題。問題是我在服務器上新創建的虛擬目錄上發佈了該API。當我在子域上發佈API時,一切正常。

2

上述的解決方法警告錯誤:編輯您的IIS應用程序池以啓用用戶配置文件加載。應用程序池>高級設置>加載用戶配置文件:真