این لینک را درنظر بگیرید:
در دامنهی آن، حروف یونیکد (فارسی/عربی) بکار رفتهاند. اگر صرفا با استفاده از قطعه کد زیر بخواهیم وجود این آدرس را بررسی کنیم:
به خطای زیر برخواهیم خورد:
البته ممکن است کد فوق را بر روی ویندوزهای جدید بدون مشکل اجرا کنید. علت اینجا است که اگر از ویندوزهای قبل از ویندوز سرور 2012 استفاده میکنید، دات نت فریم ورک از RFC 3490استفاده میکند؛ در غیراینصورت از RFC 5891 (فقط برای Windows 8, Windows 8.1, Windows 10, or Windows Server 2012)، با این تفاوتها.
روش رفع آن هم فعال سازی پردازش این نوع دامنهها (بر روی تمام ویندوزها) در فایلهای app.config و یا web.config به صورت زیر است:
کاری که این فعال سازی انجام میدهد، تبدیل خودکار نام یونیکد به «Punycode» است:
در اینجا به معادل اسکی ویژهی دامنهی یونیکد یا «en.xn--mgbz4cf.com» که Punycode نام گرفته میرسیم. این دامنهای است که بر روی تمام ویندوزها بدون مشکل کار میکند. البته همانطور که عنوان شد نیازی به انجام دستی این نوع تبدیلات نیست و همان چند سطر تنظیمات فایل config برای فعال سازی خودکار این نوع تبدیلات کافی است.
http://en.هشام.com/post/build-customizable-language-switcher-tag-helper-with-bootstrap
WebRequest wr = WebRequest.Create(uri); using (WebResponse response = wr.GetResponse()) { }
The remote name could not be resolved: 'en.هشام.com'
البته ممکن است کد فوق را بر روی ویندوزهای جدید بدون مشکل اجرا کنید. علت اینجا است که اگر از ویندوزهای قبل از ویندوز سرور 2012 استفاده میکنید، دات نت فریم ورک از RFC 3490استفاده میکند؛ در غیراینصورت از RFC 5891 (فقط برای Windows 8, Windows 8.1, Windows 10, or Windows Server 2012)، با این تفاوتها.
روش رفع آن هم فعال سازی پردازش این نوع دامنهها (بر روی تمام ویندوزها) در فایلهای app.config و یا web.config به صورت زیر است:
<configuration><uri><idn enabled="All" /><iriParsing enabled="true" /></uri></configuration>
var unicode = @"en.هشام.com"; var mapping = new IdnMapping(); // IDN = Internationalizing Domain Names var ascii = mapping.GetAscii(unicode); Console.WriteLine(ascii); string convertedBackToUnicode = mapping.GetUnicode(ascii); Console.WriteLine(convertedBackToUnicode);