Так что я нашел почти 100% решение этой проблемы.Спасибо Роуланду Шоу и Рупу за то, что они указали мне направление IDN.
Я попытался использовать IdnMapper, функция которого GetAscii будет преобразовывать доменные имена юникода в punycode, но у меня не было домена, отделенного от остальныхURL.Я попытался поместить URL в объект Uri, но я получил бы UriFormatException, если в URL были символы Юникод.
Это привело меня к: http://msdn.microsoft.com/en-us/library/system.uri(v=VS.90).aspx
, который говорит, как включить UriКласс для принятия Unicode и преобразования IDN и IRI.В нем говорится, что вам нужно что-то добавить в файл .NET 2.0 machine.config, но вы можете поместить строку в web.config, и она будет работать.
После того, как я получил Uri, работающий с юникодом, я собрал воединоURL и сделал перенаправление:
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", uri.Scheme + "://" + uri.DnsSafeHost + uri.PathAndQuery + uri.Fragment);
Response.End();
Это работает для Chrome и Firefox 3.6, но не работает в IE8.Я все еще пытаюсь решить эту проблему и обновлю здесь, если найду решение.