不要直接对Request.Headers["If-Modified-Since"]使用Convert.ToDateTime

不要直接对Request.Headers["If-Modified-Since"]使用Convert.ToDateTime

前一段时间图片处理服务一直报“System.FormatException: 该字符串未被识别为有效的 DateTime”。查了几天,没什么效果,昨天夜里写了日志记录,终于发现问题所在了。

一般来说 浏览器带到服务器端的If-Modified-Since应该是这种格式 Sun, 15 Nov 2009 04:57:01 GMT,但某些浏览器带过来的格式通过Request.Headers["If-Modified-Since"]获取到的却是:Sun, 15 Nov 2009 04:57:01 GMT; length=11162。 所以如果我们直接 Convert.ToDateTime(Request.Headers["If-Modified-Since"])就会错。

解决办法如下:

DateTime clientIfModifiedSince = DateTime.Now.AddDays(-100);

string if_Modified_Since =Request.Headers["If-Modified-Since"];
                    //Sun, 15 Nov 2009
04:57:01 GMT; length=11162
                    string[]
if_Modified_Since_array = if_Modified_Since.Split(‘;‘);
                   
if (if_Modified_Since_array.Length > 1)
                   
{
                        clientIfModifiedSince =
Convert.ToDateTime(if_Modified_Since[0]);
                   
}
                    else
                   
{
                        clientIfModifiedSince =
Convert.ToDateTime(if_Modified_Since);
                    }

时间: 2024-10-11 04:14:45

不要直接对Request.Headers["If-Modified-Since"]使用Convert.ToDateTime的相关文章

Using Request Headers for Metadata Address

问题描述 我将一个在本地调试正常的service部署到服务器后遇到了添加服务引用失败的问题.在把配置文件中基址使用的localhost替换成服务器的ip地址后问题得到了解决.但我感觉这并不是一个因为粗心写错地址产生的问题,真正的原因可能没有这么简单. 分析 在添加服务引用时需要填写服务的元数据地址,然后点Go按钮.它出错的时候可能是这个样子: 也可能是这个样子: 我们来研究一下它们为什么失败了.在浏览器中打开对应的地址可以看到: 还有 页面上有些链接的地址是基于localhost的,也就是配置文

问题:request.Headers;结果:HttpWebRequest.Headers 属性

指定构成 HTTP 标头的名称/值对的集合. Headers 集合包含与请求关联的协议标头.下表列出了由系统或由属性或方法设置但未存储在 Headers 中的 HTTP 标头. 标头 设置方 Accept 由 Accept 属性设置. Connection 由 Connection 属性和 KeepAlive 属性设置. Content-Length 由 ContentLength 属性设置. Content-Type 由 ContentType 属性设置. Expect 由 Expect 属性

python 3.x 爬虫基础---http headers详解

前言 上一篇文章 python 爬虫入门案例----爬取某站上海租房图片 中有对headers的讲解,可能是对爬虫了解的不够深刻,所以老觉得这是一项特别简单的技术,也可能是简单所以网上对爬虫系统的文档,书和视频感觉都好少,故此准备接下这段时间对爬虫涉及到的点做个系统的学习与总结. 利用浏览器查看headers 打开浏览器,按F12(开发调试工具)------>查看网络工作(Network)------>选择你访问的页面地址------>headers.就可以看到你想要的信息,如下图([白

Python——request模块

1.Requsets模块的安装 进入cmd cd C:\Python27\Scripts pip install requests 2.Requests模块的简单使用 1 #HTTP请求类型 2 #无参数的get类型 3 r = requests.get('http://httpbin.org/get') 4 #有参的get类型 5 payload = {'key1':'vaule1','key2':'value2'} 6 r = requests.get(url,params=payload)

AJAX POST请求中參数以form data和request payload形式在servlet中的获取方式

HTTP请求中,假设是get请求,那么表单參数以name=value&name1=value1的形式附到url的后面,假设是post请求,那么表单參数是在请求体中,也是以name=value&name1=value1的形式在请求体中.通过chrome的开发人员工具能够看到例如以下(这里是可读的形式,不是真正的HTTP请求协议的请求格式): get请求: RequestURL:http://127.0.0.1:8080/test/test.do?name=mikan&address=

Nginx SSL+tomcat集群,request.getScheme() 取到https正确的协议

转自:http://feitianbenyue.iteye.com/blog/2056357 最近在做一个项目, 架构上使用了 Nginx +tomcat 集群, 且nginx下配置了SSL,tomcat no SSL,项目使用https协议 但是,明明是https url请求,发现 log里面, Xml代码   0428 15:55:55 INFO  (PaymentInterceptor.java:44) preHandle() - requestStringForLog:    { "re

AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式

HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以name=value&name1=value1的形式在请求体中.通过chrome的开发者工具可以看到如下(这里是可读的形式,不是真正的HTTP请求协议的请求格式): get请求: RequestURL:http://127.0.0.1:8080/test/test.do?name=mikan&address=str

Request —— 让 Node.js http请求变得超简单

先前一直比较关注前端的东西,对后端了解较少.不过一直对Node.js比较感兴趣,去年12月还去参加了阿里的CNODE交流聚会. 以后希望通过这里的博客分享一些学习Node.js的笔记.一方面总结了自己的学习心得,另一方面也可以和大家一起分享交流. 嗯,大概就是这样子. 这篇就先介绍一个Node.js的模块——request.有了这个模块,http请求变的超简单. 使用超简单 Request使用超简单,同时支持https和重定向. var request = require('request');

PatentTips - Modified buddy system memory allocation

BACKGROUND Memory allocation systems assign blocks of memory on request. A memory allocation system employs an allocator to receive relatively large blocks of memory from an operating system and allocate that memory to satisfy memory requests. Upon r