我一定错过了一些关于cookie的基本知识.在本地主机上,当我设置在服务器端的cookie,并明确指定域为localhost(或.localhost).某些浏览器似乎没有接受cookie.
Firefox 3.5:我在Firebug中检查了HTTP请求.我看到的是:
Set-Cookie:
name=value;
domain=localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
Run Code Online (Sandbox Code Playgroud)
或者(当我将域设置为.localhost时):
Set-Cookie:
name=value;
domain=.localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,都不会存储cookie.
IE8:我没有使用任何额外的工具,但cookie似乎也没有存储,因为它不会在后续请求中发回.
Opera 9.64: localhost和.localhost都工作,但是当我检查Preferences中的cookie列表时,域名设置为localhost.local,即使它列在localhost下(在列表分组中).
Safari 4: localhost和.localhost都可以工作,但它们在Preferences中始终列为.localhost.另一方面,没有显式域的cookie,它显示为localhost(无点).
localhost有什么问题?由于存在这么多的不一致,必须有一些涉及localhost的特殊规则.另外,我不完全清楚为什么域名必须以点为前缀?RFC 2109明确声明:
Domain属性的值不包含嵌入点或不以点开头.
为什么?该文件表明它必须对安全做些什么.我不得不承认我没有阅读整个规范(稍后可能会这样做),但听起来有点奇怪.基于此,在localhost上设置cookie是不可能的.
IQueryable<Organization> query = context.Organizations;
Func<Reservation, bool> predicate = r => !r.IsDeleted;
query.Select(o => new {
Reservations = o.Reservations.Where(predicate)
}).ToList();
Run Code Online (Sandbox Code Playgroud)
此查询引发"内部.NET Framework数据提供程序错误1025"异常,但下面的查询不会.
query.Select(o => new {
Reservations = o.Reservations.Where( r => !r.IsDeleted)
}).ToList();
Run Code Online (Sandbox Code Playgroud)
我需要使用第一个,因为我需要检查一些if语句来构造正确的谓词.我知道在这种情况下我不能使用if语句,这就是我将委托作为参数传递的原因.
如何使第一个查询起作用?
.net c# entity-framework expression-trees entity-framework-4
我有一个javascript函数,它作为查询字符串值传递另一个查询字符串.
换句话说,我希望查询字符串为:
http://www.somesite.com/?somequery=%3fkey%3dvalue1%2520%26%2520key2%3value3
Run Code Online (Sandbox Code Playgroud)
但是,如果我像这样重定向:
var url = 'http://www.somesite.com/?somequery=';
url += escape('?key=value1&key2=value2');
window.location = url;
Run Code Online (Sandbox Code Playgroud)
它最终http://www.somesite.com?somequery=?key1=value1&key2=value2在firefox和IE7中,这意味着我无法正确解析查询字符串.
我也试过使用encodeURIComponent也没用.
是否有另一个函数或黑客强制重定向保持somequery值逃脱?
我正在寻找一种方法将字符串转换为C#中的Unicode字符文字序列.
例:
输入:嗨!
输出:\ u0048\u0069\u0021