From e05469a989075aef1eeba83f1fba4125d054fd90 Mon Sep 17 00:00:00 2001 From: Brennan Date: Wed, 13 Jan 2016 14:29:45 -0800 Subject: [PATCH] Use UTC --- .../StaticFileContext.cs | 2 +- .../CacheHeaderTests.cs | 23 +++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.AspNet.StaticFiles/StaticFileContext.cs b/src/Microsoft.AspNet.StaticFiles/StaticFileContext.cs index dc3a0488d5..cefcecdb26 100644 --- a/src/Microsoft.AspNet.StaticFiles/StaticFileContext.cs +++ b/src/Microsoft.AspNet.StaticFiles/StaticFileContext.cs @@ -140,7 +140,7 @@ namespace Microsoft.AspNet.StaticFiles DateTimeOffset last = _fileInfo.LastModified; // Truncate to the second. - _lastModified = new DateTimeOffset(last.Year, last.Month, last.Day, last.Hour, last.Minute, last.Second, last.Offset); + _lastModified = new DateTimeOffset(last.Year, last.Month, last.Day, last.Hour, last.Minute, last.Second, last.Offset).ToUniversalTime(); long etagHash = _lastModified.ToFileTime() ^ _length; _etag = new EntityTagHeaderValue('\"' + Convert.ToString(etagHash, 16) + '\"'); diff --git a/test/Microsoft.AspNet.StaticFiles.Tests/CacheHeaderTests.cs b/test/Microsoft.AspNet.StaticFiles.Tests/CacheHeaderTests.cs index ba7d957140..781ef8f044 100644 --- a/test/Microsoft.AspNet.StaticFiles.Tests/CacheHeaderTests.cs +++ b/test/Microsoft.AspNet.StaticFiles.Tests/CacheHeaderTests.cs @@ -138,6 +138,8 @@ namespace Microsoft.AspNet.StaticFiles HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/SubFolder/extra.xml"); Assert.NotNull(response.Content.Headers.LastModified); + // Verify that DateTimeOffset is UTC + Assert.Equal(response.Content.Headers.LastModified.Value.Offset, TimeSpan.Zero); } // 13.3.4 @@ -234,7 +236,7 @@ namespace Microsoft.AspNet.StaticFiles // Modified) response. [Fact] - public async Task IfModifiedSinceDateEqualsLastModifiedShouldReturn304() + public async Task IfModifiedSinceDateGreaterThanLastModifiedShouldReturn304() { TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer()); @@ -244,10 +246,27 @@ namespace Microsoft.AspNet.StaticFiles HttpResponseMessage res2 = await server .CreateRequest("/SubFolder/extra.xml") - .And(req => req.Headers.IfModifiedSince = res1.Content.Headers.LastModified) + .And(req => req.Headers.IfModifiedSince = DateTimeOffset.Now) .GetAsync(); Assert.Equal(HttpStatusCode.NotModified, res2.StatusCode); } + + [Fact] + public async Task IfModifiedSinceDateLessThanLastModifiedShouldReturn200() + { + TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer()); + + HttpResponseMessage res1 = await server + .CreateRequest("/SubFolder/extra.xml") + .GetAsync(); + + HttpResponseMessage res2 = await server + .CreateRequest("/SubFolder/extra.xml") + .And(req => req.Headers.IfModifiedSince = DateTimeOffset.MinValue) + .GetAsync(); + + Assert.Equal(HttpStatusCode.OK, res2.StatusCode); + } } }