OFFSET sql 和 EF 跳过 IIS 7.5 与 win server 2008 R2 不兼容

OFFSET sql and EF Skip no compatibility in IIS 7.5 with win server 2008 R2

提问人:Rafael Alfredo Zelaya Amaya 提问时间:8/11/2022 最后编辑:Rafael Alfredo Zelaya Amaya 更新时间:8/11/2022 访问量:100

问:

在装有 Windows 11 的本地计算机 visual studio 2022 中,我创建了一个项目 API REST,并且对数据库有一个请求,如下所示

result = await appDb.table
                        .Skip(data.Index)
                        .Where(something here)
                        .Take(data.NumberToTake)
                        .ToListAsync();

它在我的本地计算机上工作正常,但是当我将代码发布到我的 IIS 7.5 Windows Server 2008 R2 时,出现以下错误:

Microsoft.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near 'OFFSET'.
   at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__188_0(Task`1 result)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)

如果我更改代码并删除跳过命令,它效果很好。我知道问题出在版本上,但我不知道如何获取使用 IIS 7.5 的 .net core 版本(前段时间我安装了一个捆绑包以允许运行 asp.net Core 项目,但不知道哪个版本实际运行)或者可能是其他东西。

编辑: 这是我安装的用于运行 .net core 的捆绑包: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-aspnetcore-6.0.4-windows-hosting-bundle-installer

我能做些什么吗?

C# REST IIS-7.5 Windows-服务器-2008-R2

评论

2赞 Dai 8/11/2022
唯一重要的是您正在使用的 SQL Server 版本以及数据库的兼容级别。您需要运行 SQL Server 2012 或更高版本才能使用: mssqltips.com/sqlservertip/2362/...,并且您的兼容级别需要为或更高。OFFSET110
0赞 Jalpa Panchal 8/11/2022
asp.net 核心仅支持 Windows 7 或更高版本或 Windows Server 2012 R2 或更高版本。learn.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/......
0赞 Rafael Alfredo Zelaya Amaya 8/11/2022
是的,这是真的,我必须启用 TLS 1.2 才能使其工作:support.microsoft.com/es-es/topic/......

答:

0赞 Rafael Alfredo Zelaya Amaya 8/11/2022 #1

最后,我所做的是:

Result = await appDb.Table
                    .Where(...)
                    //.Skip(data.Index)
                    //.Take(data.NumberToTake)
                    .ToListAsync();

Result = Result.Skip(data.Index).Take(data.NumberToTake).ToList();

效率低下,但在我找到更好的方法之前,这目前有效。