代码改变世界

ASP.Net Core 发布ABP项目遇到的错误

2018-04-08 10:52  蛮荒古神  阅读(2043)  评论(0编辑  收藏  举报

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>