Tôi đã có một cần phải làm hôm nay cho một trang web SharePoint trong đó sử dụng hình thức Dựa Authentication (FBA). Nếu bạn thử và gọi một trang ứng dụng mà không nhân bản các cookie và gán một đối tượng CookieContainer thì yêu cầu đó sẽ thất bại.
tôi đã chọn để tóm tắt các công việc để phương pháp này mở rộng tiện dụng:
public static CookieContainer GetCookieContainer(this System.Web.HttpRequest SourceHttpRequest, System.Net.HttpWebRequest TargetHttpWebRequest)
{
System.Web.HttpCookieCollection sourceCookies = SourceHttpRequest.Cookies;
if (sourceCookies.Count == 0)
return null;
else
{
CookieContainer cookieContainer = new CookieContainer();
for (int i = 0; i < sourceCookies.Count; i++)
{
System.Web.HttpCookie cSource = sourceCookies[i];
Cookie cookieTarget = new Cookie() { Domain = TargetHttpWebRequest.RequestUri.Host,
Name = cSource.Name,
Path = cSource.Path,
Secure = cSource.Secure,
Value = cSource.Value };
cookieContainer.Add(cookieTarget);
}
return cookieContainer;
}
}
Bạn có thể sau đó chỉ cần gọi nó từ bất kỳ HttpRequest đối tượng với một mục tiêu HttpWebRequest đối tượng như một tham số, ví dụ:
HttpWebRequest request;
request = (HttpWebRequest)WebRequest.Create(TargetUrl);
request.Method = "GET";
request.Credentials = CredentialCache.DefaultCredentials;
request.CookieContainer = SourceRequest.GetCookieContainer(request);
request.BeginGetResponse(null, null);
trong đó TargetUrl là Url của trang tôi đang theo dõi và SourceRequest là HttpRequest của trang tôi đang truy cập, được truy xuất qua Page.Request.
Nguồn
2013-05-28 00:46:57
Tôi nghĩ kỹ thuật này sẽ hiệu quả, nhưng tôi thực sự hy vọng một giải pháp không liên quan đến việc sao chép từng giá trị. – Mike
whats với thử với các sản phẩm nào? – CRice
điểm tốt, đã bị xóa. – David