ASP.Net Core 發布ABP項目遇到的錯誤


1、HTTP 錯誤 500.19 - Internal Server Error 無法訪問請求的頁面,因為該頁的相關配置數據無效。

與ASP.NET時代不同,ASP.NET Core不再是由IIS工作進程(w3wp.exe)托管,而是使用自托管Web服務器(Kestrel)運行,IIS則是作為反向代理的角色轉發請求到Kestrel不同端口的ASP.NET Core程序中,隨后就將接收到的請求推送至中間件管道中去,處理完你的請求和相關業務邏輯之后再將HTTP響應數據重新回寫到IIS中,最終轉達到不同的客戶端(瀏覽器,APP,客戶端等)。而配置文件和過程都會由些許調整,中間最重要的角色便是AspNetCoreModule,它是其中一個的IIS模塊,請求進入到IIS之后便立即由它轉發,並迅速重定向到ASP.NET Core項目中,所以這時候我們無需設置應用程序池來托管我們的代碼,它只負責轉發請求而已。

部署之前要確保你的IIS上已經安裝了AspNetCoreModule托管模塊,如果沒有的話,點擊這里進行下載並安裝

 

2、'OFFSET' 附近有語法錯誤。 在 FETCH 語句中選項 NEXT 的用法無效。

最近在使用asp.net core的時候,采用take().skip()分頁的時候報如下錯誤:
SqlException: 'OFFSET' 附近有語法錯誤。 在 FETCH 語句中選項 NEXT 的用法無效。
這個主要是在sql server 2008中,不支持FETCH和NEXT語句(sql server 2012才支持)。
之后在網上參考了一下其他的文章,最終解決了這個問題,記錄一下,方便后來人。
解決方法:
修改“StartUp.cs”文件,具體代碼截圖如下:
1.普通修改方式
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
  // Add framework services.
  services.AddMvc();
 
  var connection = @"Data Source=tcp:111.111.111.111,1044;
  Initial Catalog=xxx;Persist Security Info=True;User ID=xxxx;Password=xxxxx";
  services.AddDbContext<NoteContext>(options => options.UseSqlServer(connection,b=>b.UseRowNumberForPaging()));
 
  services.AddScoped<Repository.INoteRepository,Repository.NoteRepository>();
  services.AddScoped<Repository.INoteTypeRepository, Repository.NoteTypeRepository>();
}
 
2.abp修改方式
public static class DbContextOptionsConfigurer
{
  public static void Configure(DbContextOptionsBuilder<SSODbContext> dbContextOptions,string connectionString)
  {
    /* This is the single point to configure DbContextOptions for testDbContext */
    dbContextOptions.UseSqlServer(connectionString ,b => b.UseRowNumberForPaging());
  }
}

 

3、異常詳細信息: System.Data.SqlClient.SqlException:用戶 'IIS APPPOOL\DefaultAppPool' 登錄失敗解決辦法

看了很多關於這個錯誤的解決方法, 一般來說是對sql server 2005(2008) management studio

 

圖例也有,但是和我的2008 r2 不一樣....

 

最終找到方法:我們在配置網站的時候在應用程序池里, 選擇高級配置 里面的標識改為 LocalSystem 如果數據庫是本地的就可以了......

4、405.0 - Method Not Allowed

WebDAV 是超文本傳輸協議 (HTTP) 的一組擴展,為 Internet 上計算機之間的編輯和文件管理提供了標准.利用這個協議用戶可以通過Web進行遠程的基本文件操作,如拷貝、移動、刪除等。在IIS 7.0中,WebDAV是作為獨立擴展模塊,需要單獨進行下載,而IIS 7.5中將集成WebDAV,然而WebDav把Put,Delete給咔嚓了。所以在IIS 7.5上部署的RESTful服務(WCF Data Service,WCF Rest Service,ASP.NET Web API,ASP.NET MVC)就悲劇了,當發送Put請求就會發生HTTP Error 405.0 – Method  Not Allowed錯誤,解決方法也很簡單,在Web.config里面加入如下設置:

<system.webServer>
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webServer>


免責聲明!

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



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