小编Dav*_*ldo的帖子

IAsyncActionFilter,尝试记录请求正文,但它是空的

我正在尝试设置 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)

我不想使用中间件,因为我只需要记录一些控制器。

c# .net-core asp.net-core

8
推荐指数
1
解决办法
4340
查看次数

插入/选择时死锁

好吧,我完全迷失在死锁问题上。我只是不知道如何解决这个问题。

\n

我有这三个表(我删除了不重要的列):

\n
CREATE 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)

sql sql-server deadlock database-deadlocks

8
推荐指数
1
解决办法
1447
查看次数

T-SQL疯狂功能结果

我有这个功能:

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)

为什么?有任何想法吗?

编辑:目的是仅插入不在表中的名称。我知道使用密钥会更好,问题的重点不是找到更好的解决方案,而是为什么这种解决方案不起作用。

t-sql sql-server function

7
推荐指数
1
解决办法
107
查看次数

需要对动态的指针数组进行排序,并在其中包含可能的NULL指针

我试图弄清楚如何对结构中的指针数组进行排序,其中包含可能的空指针.但我无法理解它,并在排序后不断崩溃.

我有两个结构,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)

c struct pointers qsort

1
推荐指数
1
解决办法
98
查看次数