Библиотека Boost.String имеет множество алгоритмов для сравнения без учета регистра и т. Д.
Вы могли бы реализовать свой собственный, но зачем беспокоиться, когда это уже сделано?
Я только что нашел исправление для этой ошибки и обсуждал здесь: http://dot-net-expertise.blogspot.com/2009/10/cookiecontainer-domain-handling-bug-fix.html
Вот решение:
Вызывайте BugFix_CookieDomain каждый раз, когда вы добавляете cookie в контейнер или перед использованием .GetCookie или перед использованием контейнера системой.
private void BugFix_CookieDomain (CookieContainer cookieContainer)
{
System.Type _ContainerType = typeof (CookieContainer);
Hashtable table = (Hashtable) _ContainerType.InvokeMember ("m_domainTable",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.GetField |
System.Reflection.BindingFlags.Instance,
значение NULL,
cookieContainer,
новый объект [] {});
ArrayList keys = новый ArrayList (table.Keys);
foreach (строка keyObj в ключах)
{
строковый ключ = (keyObj как строка);
если (ключ [0] == '.')
{
строка newKey = key.Remove (0, 1);
таблица [newKey] = таблица [keyObj];
}
}
}
Вот способ обойти эту ошибку: http://social.microsoft.com/Forums/en-US/netfxnetcom/thread/1297afc1-12d4-4d75-8d3f-7563222d234c Он использует отражение.
Наконец они исправят это: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=478521