Error with resources: Parameter name: utcDate

Jan 18, 2011 at 2:41 PM
Edited Jan 18, 2011 at 2:47 PM

Exception Details
: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: utcDate

Here is the stacktrace

[ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: utcDate]
System.Web.HttpCachePolicy.UtcSetLastModified(DateTime utcDate) +3126766
Xpedite.WebAbstraction.WebResponse.SendResource(IResource resource, ICompressor compressor) +178
Xpedite.Handlers.MinificationHandler.ProcessRequest(IWebContext context, ResourceType resourceType) +303
Xpedite.Handlers.CssMinificationHandler.ProcessRequest(HttpContext context) +48
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean completedSynchronously) +75

css and javascript files are not rendered after hitting refresh button

I am using this on my MVC 2 project. I guess it has something to do with the handler

        <!-- Xpedite -->
        <httpHandlers>
            <add verb="GET,HEAD"
                 path="*.css" type="Xpedite.Handlers.CssMinificationHandler, Xpedite, PublicKeyToken=a255fab67ac3163b"/>
            <add verb="GET,HEAD"
                 path="*.js" type="Xpedite.Handlers.JavaScriptMinificationHandler, Xpedite, PublicKeyToken=a255fab67ac3163b"/>
        </httpHandlers>
        <!-- Xpedite -->

Jan 19, 2011 at 2:13 PM
Edited Jan 19, 2011 at 2:18 PM

Hi Geocine,

Thank you very much for all the excellent feedback; greatly appreciated.

This happens when Windows decides to "Future-Date" the "modified by" date on a file (last-modified header must be in the past). Xpedite is supposed to check to ensure that the file's modified date is in the past and act accordingly. The function that is supposed to be invoked is:

    private static DateTime EnsureLessThanCurrentDateTime(DateTime date)
    {
      DateTime utcDate = date.ToUniversalTime();
      DateTime utcNow = DateTime.UtcNow;

      return utcDate > utcNow ? utcNow.Date : utcDate;
    }

However, the required call was accidently dropped in change set d0dcdf0d10f0 ; I will restore the following line of code below. The WebAbstraction namespace (along with WebControls namespace) are the only places where testing is somewhat deficient.

    _response.Cache.SetLastModified(EnsureLessThanCurrentDateTime(resource.LastWriteTime));

The change will be committed tonight along with an updated build. Sorry for the inconvenience.

 *Edit*

 Also, I have updated my email notification options to turn off daily-digest for this project so that I may provide same-day turn-around on any future discussions.


Jan 20, 2011 at 2:10 AM

Version 1.0.1.1 release posted with required fix (fully stress tested).

Please let me know if you have any further issues.