KevinDockx/HttpCacheHeaders

PUT/PATCH 412 with appropriate etag and If-Match

KingOfTheGeeks opened this issue · 1 comments

When doing a get and put or patch using postman or Blazor app i get the following result:

Marvin.Cache.Headers.HttpCacheHeadersMiddleware: Information: Checking for conditional GET/HEAD.
Marvin.Cache.Headers.HttpCacheHeadersMiddleware: Information: Not valid - no If-None-Match or

info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Checking for conditional GET/HEAD.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Not valid - no If-None-Match or If-Modified-Since headers.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Don't generate 304 - Not Modified. Continue.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Checking for conditional PUT/PATCH.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Not valid - method isn't PUT or PATCH.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Don't generate 412 - Precondition Failed. Continue.
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (4ms) [Parameters=[@__id_0='60968378-e0fe-4341-8236-da488ee7df1f'], CommandType='Text', CommandTimeout='30']
SELECT CASE
WHEN EXISTS (
SELECT 1
FROM [Job] AS [j]
WHERE [j].[Id] = @__id_0) THEN CAST(1 AS bit)
ELSE CAST(0 AS bit)
END
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (5ms) [Parameters=[@__jobId_0='60968378-e0fe-4341-8236-da488ee7df1f', @__id_1='25beb9a2-2483-414b-9a00-08d7bd309e84'], CommandType='Text', CommandTimeout='30']
SELECT TOP(1) [i].[Id], [i].[Content], [i].[ContentType], [i].[CreatedBy], [i].[CreatedOn], [i].[Description], [i].[FileName], [i].[ThumbnailContent]
FROM [JobImage] AS [j]
INNER JOIN [Image] AS [i] ON [j].[ImageId] = [i].[Id]
WHERE ([j].[JobId] = @__jobId_0) AND ([j].[ImageId] = @__id_1)
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Generating expiration headers.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Expiration headers generated. Expires: Sat, 29 Feb 2020 16:07:51 GMT. Cache-Control: public,max-age=60.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Generating Validation headers.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Validation headers generated. ETag: Strong, "152D0D0210110006BAC20857E60F6A7D". Last-Modified: Sat, 29 Feb 2020 16:06:51 GMT
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Generating Vary header.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Vary header generated: Accept, Accept-Language, Accept-Encoding.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Checking for conditional GET/HEAD.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Not valid - method isn't GET or HEAD.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Don't generate 304 - Not Modified. Continue.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Checking for conditional PUT/PATCH.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Checking If-Match.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Checking If-Match: "152D0D0210110006BAC20857E60F6A7D".
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Not valid. No match found for ETag.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Generating 412 - Precondition Failed.
info: Marvin.Cache.Headers.HttpCacheHeadersMiddleware[0]
Generation done. ETag: Strong, "09F19E816A7E7D7BF4C3EC94A3343ADC", Last-Modified: Sat, 29 Feb 2020 16:07:01 GMT.

My apologies at my ignorance, and quite possibly this is my own doing but i am unsure how to proceed, request your guidance sir.

This looks correct: no If-None-Match header was provided so the validation model won't be triggered.
At the end, a strong ETag is generated and returned. What is the result you'd expect?