我正在尝试设置 IAsyncActionFilter 来记录某些 API 请求的请求正文。但是当我尝试读取正文流时,我每次都会得到空字符串。
这是我的代码: StringContent 始终是一个空字符串,即使 post 请求上有一个 json 正文。
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
ActionExecutedContext rContext = null;
string stringContent = string.Empty;
try
{
context.HttpContext.Request.EnableBuffering();
context.HttpContext.Request.Body.Position = 0;
using (var reader = new StreamReader(context.HttpContext.Request.Body))
{
stringContent = await reader.ReadToEndAsync();
context.HttpContext.Request.Body.Position = 0;
}
rContext = await next();
}
catch (Exception)
{
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
我不想使用中间件,因为我只需要记录一些控制器。
好吧,我完全迷失在死锁问题上。我只是不知道如何解决这个问题。
\n我有这三个表(我删除了不重要的列):
\nCREATE TABLE [dbo].[ManageServicesRequest]\n(\n [ReferenceTransactionId] INT NOT NULL,\n [OrderDate] DATETIMEOFFSET(7) NOT NULL,\n [QueuePriority] INT NOT NULL,\n [Queued] DATETIMEOFFSET(7) NULL,\n CONSTRAINT [PK_ManageServicesRequest] PRIMARY KEY CLUSTERED ([ReferenceTransactionId]),\n)\n\nCREATE TABLE [dbo].[ServiceChange]\n(\n [ReferenceTransactionId] INT NOT NULL,\n [ServiceId] VARCHAR(50) NOT NULL,\n [ServiceStatus] CHAR(1) NOT NULL,\n [ValidFrom] DATETIMEOFFSET(7) NOT NULL,\n CONSTRAINT [PK_ServiceChange] PRIMARY KEY CLUSTERED ([ReferenceTransactionId],[ServiceId]),\n CONSTRAINT [FK_ServiceChange_ManageServiceRequest] FOREIGN KEY ([ReferenceTransactionId]) REFERENCES [ManageServicesRequest]([ReferenceTransactionId]) ON DELETE CASCADE,\n INDEX [IDX_ServiceChange_ManageServiceRequestId] ([ReferenceTransactionId]),\n INDEX [IDX_ServiceChange_ServiceId] ([ServiceId])\n)\n\nCREATE TABLE [dbo].[ServiceChangeParameter]\n(\n [ReferenceTransactionId] INT NOT NULL,\n [ServiceId] VARCHAR(50) NOT NULL,\n [ParamCode] VARCHAR(50) …Run Code Online (Sandbox Code Playgroud) 我有这个功能:
CREATE FUNCTION CheckAkvNames (@Name VARCHAR(20))
RETURNS INT
AS
BEGIN
DECLARE @NoTexist int = 1
SELECT
@NoTexist = CASE WHEN COUNT(*) > 0 THEN 0 ELSE 1 END
FROM
[dbo].[Names]
WHERE
[Name] = @Name
RETURN @NoTexist
END
GO
ALTER TABLE [dbo].[Names]
ADD CONSTRAINT chkNames CHECK(dbo.CheckAkvNames([Name]) = 1);
GO
Run Code Online (Sandbox Code Playgroud)
问题是,当我在空表上运行时,我无法插入...
因此,此更改有效:
CASE WHEN (COUNT(*) - 1) > 0 THEN 0 ELSE 1 END
Run Code Online (Sandbox Code Playgroud)
为什么?有任何想法吗?
编辑:目的是仅插入不在表中的名称。我知道使用密钥会更好,问题的重点不是找到更好的解决方案,而是为什么这种解决方案不起作用。
我试图弄清楚如何对结构中的指针数组进行排序,其中包含可能的空指针.但我无法理解它,并在排序后不断崩溃.
我有两个结构,CAR并且CARLIST:
CARLIST有一个指针数组CARS.而我无法做到对.
谢谢你的帮助...
typedef struct Car {
int parked_Total_Minutes;
char rz[10];
} CAR;
typedef struct CarList {
CAR **p_cars;
unsigned int count;
unsigned int size;
} CARLIST;
int Compare_ParkedTime(const void *a, const void *b) {
if (a == NULL)
return -1;
if (b == NULL)
return 1;
CAR *aa = *(CAR* const *)a;
CAR *bb = *(CAR* const *)b;
return (bb->parked_Total_Minutes < aa->parked_Total_Minutes) - (aa->parked_Total_Minutes < bb->parked_Total_Minutes);
}
int main() {
.... …Run Code Online (Sandbox Code Playgroud)