Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpCookie到Cookie-如何处理缺少的域?_C#_Asp.net_.net_Cookies_Httpwebrequest - Fatal编程技术网

C# HttpCookie到Cookie-如何处理缺少的域?

C# HttpCookie到Cookie-如何处理缺少的域?,c#,asp.net,.net,cookies,httpwebrequest,C#,Asp.net,.net,Cookies,Httpwebrequest,我正在ASP.NET中创建代理页(我需要绕过跨站点脚本限制)。我需要Page\u Load处理程序根据传入的请求向该页面发送HttpWebRequest var request = (HttpWebRequest)WebRequest.Create(urlToProxy); request.Method = "GET"; request.GetResponse(); 但是,我遇到了一些身份验证问题(是的,我确实正确设置了请求。凭据,这里没有显示),因此我想将cookie从传入请求(访问我的代理

我正在ASP.NET中创建代理页(我需要绕过跨站点脚本限制)。我需要
Page\u Load
处理程序根据传入的请求向该页面发送
HttpWebRequest

var request = (HttpWebRequest)WebRequest.Create(urlToProxy);
request.Method = "GET";
request.GetResponse();
但是,我遇到了一些身份验证问题(是的,我确实正确设置了
请求。凭据,这里没有显示),因此我想将cookie从传入请求(访问我的代理页面)转发到此传出请求。你会认为这很简单:

request.CookieContiner = Request.Cookies;
然而,这不起作用。传出的
HttpWebRequest
使用
HttpCookie
s,而传入的
HttpRequest
使用
Cookie
s。这些类没有继承或接口关系(实际上一个在
System.Net
中,另一个在
System.Web
中)

我试图将
HttpCookie
s复制到
Cookie
s中,然后将它们添加到
CookieContainer
,但我也无法实现这一点

 public static IEnumerable<Cookie> ToCookies(this HttpCookie cookie)
 {
    var cookies = new List<Cookie>(cookie.Values.Count);
    foreach (String key in cookie.Values)
    {
        cookies.Add(new Cookie()
        {
            Domain = cookie.Domain,
            Expires = cookie.Expires,
            HttpOnly = cookie.HttpOnly,
            Name = cookie.Name,
            Path = cookie.Path,
            Secure = cookie.Secure,
            Value = cookie.Values[key]
        });                
     }
     return cookies;
 }

 ...

 var cookieContainer = new CookieContainer();
 foreach(var httpCookie in Request.Cookies)
 {
     foreach(var cookie in httpCookie.ToCookies())
     {
         cookieContainer.Add(cookie); //Exception thrown here
     }
 }
公共静态IEnumerable ToCookies(此HttpCookie cookie)
{
var cookies=新列表(cookie.Values.Count);
foreach(cookie.Values中的字符串键)
{
添加(新Cookie()
{
Domain=cookie.Domain,
Expires=cookie.Expires,
HttpOnly=cookie.HttpOnly,
Name=cookie.Name,
Path=cookie.Path,
安全=cookie.Secure,
Value=cookie.Values[key]
});                
}
归还饼干;
}
...
var cookieContainer=新建cookieContainer();
foreach(Request.Cookies中的var httpCookie)
{
foreach(httpCookie.ToCookies()中的var cookie)
{
cookieContainer.Add(cookie);//此处引发异常
}
}
抛出的异常表示无法添加具有
null
“域”的
Cookie
。显然,一些
HttpCookie
s具有
null
“域”属性

有没有人对将
HttpCookie
转换为
Cookie
的最佳方法有什么建议?我希望我使用的任何解决方案都尽可能具有通用性(因此不涉及将已知域硬编码到新的
Cookie
s中)


更好的是,有没有一种更简单的方法可以简单地使用
HttpRequest
类而不是
HttpWebRequest
类来完成我想要的任务?

另一端的客户端是什么?它是一个网站吗?是的。以下是一些附加字符,可使此注释满足注释中字符的最小值。您确定domain=cookie.domain行上存在域吗?另外,为失败的域设置了哪些值?不,未设置任何内容<代码>cookie。域
为空。因此,问题就来了。如何最好地将
HttpCookie
转换为
Cookie