اشتراکها
با فرض فعال سازی و ثبت PersianDateModelBinder، این خطا زمانی حاصل میشود که یک فیلد datetime مقدار دهی نشده را بخواهید در بانک اطلاعاتی ذخیره کنید. نوع datetime در دات نت value type است و مقدار پیش فرض آن 0001-01-01 است (DateTime.MinValue) که قابل ذخیره سازی در بانک اطلاعاتی نیست. یا فیلد را nullable تعریف کنید (هم در سمت کدها و هم در سمت بانک اطلاعاتی) و یا حتما هنگام ذخیره سازی اطلاعات، آنرا مقدار دهی کنید تا مقدار پیش فرض خود را نداشته باشد.
اگر پروژهی مورد نظر خود را بر روی هاست آپلود کرده و کاربر به صورت اتوماتیک loggout میشود ممکن است به احتمال زیاد مشکل به Idle-timeout در IIS بر گردد .
Idle-time Out به صورت پیش فرض بر روی 20 دقیقه تنظیم شده است .
غیر فعال کردن Idle-timeout :
ابتدا به مسیر زیر مراجعه کرده :
مقدار Idle-timeout به صورت زیر میباشد :
اگر مقدار آن بر روی 0 تنظیم شود ، Idle-timeout غیر فعال میشود .
Idle-time Out به صورت پیش فرض بر روی 20 دقیقه تنظیم شده است .
در سروری که بنده پروزه رو آپلود کرده بودم روی 5 تنظیم شده بود و همین موضوع باعث خروج کاربر میشد .
غیر فعال کردن Idle-timeout :
ابتدا به مسیر زیر مراجعه کرده :
C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml
مقدار Idle-timeout به صورت زیر میباشد :
<attribute name="idleTimeout" type="timeSpan" defaultValue="00:20:00" validationType="timeSpanRange" validationParameter="0,2592000,60"/>
اگر مقدار آن بر روی 0 تنظیم شود ، Idle-timeout غیر فعال میشود .
یک نکتهی تکمیلی: ساده سازی فعالسازی گزینههای مختلف کامپایلر TypeScript
پس از به روز رسانی کامپایلر تایپاسکریپت با دستور npm install -g typescript، اگر دستور tsc --init را در یک پوشهی جدید اجرا کنید، سبب تولید یک فایل tsconfig.json از پیش تنظیم شده، بر اساس آخرین قابلیتهای کامپایلر TypeScript میشود. برای مثال تنظیمات ذیل قسمتی از تنظیمات نگارش 2.7.1 است و برای نمونه strictPropertyInitialization به آن اضافه شدهاست:
اگر میخواهید به ازای هر به روز رسانی کامپایلر تایپاسکریپت این تنظیمات را تغییر ندهید، فقط کافی است تنظیم strict": true" را قید کنید و مابقی را تنها در صورت نیاز به false کردن آنها ذکر نمائید.
پس از به روز رسانی کامپایلر تایپاسکریپت با دستور npm install -g typescript، اگر دستور tsc --init را در یک پوشهی جدید اجرا کنید، سبب تولید یک فایل tsconfig.json از پیش تنظیم شده، بر اساس آخرین قابلیتهای کامپایلر TypeScript میشود. برای مثال تنظیمات ذیل قسمتی از تنظیمات نگارش 2.7.1 است و برای نمونه strictPropertyInitialization به آن اضافه شدهاست:
/* Strict Type-Checking Options */ "strict": true, /* Enable all strict type-checking options. */ // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ // "strictNullChecks": true, /* Enable strict null checks. */ // "strictFunctionTypes": true, /* Enable strict checking of function types. */ // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ /* Additional Checks */ // "noUnusedLocals": true, /* Report errors on unused locals. */ // "noUnusedParameters": true, /* Report errors on unused parameters. */ // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
نظرات مطالب
بررسی چک لیست امنیتی web.config
آیا شما هم برای اجرا نشدن فایلهای aspx از این وبکانفیگ در پوشه آپلودتون استفاده میکنید؟ آیا روش من درست است؟
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.web> <httpHandlers> <!-- iis6 - for any request in this location, return via managed static file handler --> <add path="*" verb="*" type="System.Web.StaticFileHandler" /> </httpHandlers> </system.web> </configuration>
اما نسخه اصلی(از OrchardCMS)
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appSettings> <add key="webpages:Enabled" value="false" /> </appSettings> <system.web> <httpHandlers> <!-- iis6 - for any request in this location, return via managed static file handler --> <add path="*" verb="*" type="System.Web.StaticFileHandler" /> </httpHandlers> </system.web> <system.webServer> <staticContent> <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /> </staticContent> <handlers accessPolicy="Script,Read"> <!-- iis7 - for any request to a file exists on disk, return it via native http module. accessPolicy 'Script' is to allow for a managed 404 page. --> <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" /> </handlers> </system.webServer> </configuration>
اشتراکها
نگاهی به Angular 2 و TypeScript
دستگاه کارتخوان تحت شبکهای را تصور کنید که تا دیروز در شبکه دیده میشد اما امروز ناپدید شده! دیگر نمیشود با آن ارتباط برقرار کرد و توسط برنامه نوشته شده آنرا تخلیه کرد. به صورت پیش فرض یک IP ثابت به این دستگاهها انتساب داده میشود مثلا 192.168.1.100 . حال اگر در شبکه این IP رزرو نشود ممکن است DHCP این IP را به کامپیوتر دیگری بدهد یا روتری به اشتباه از آن استفاده کند. الان چطور باید تشخیص داد که این IP توسط چه وسیلهای در حال استفاده است؟
برای بدست آوردن MAC Address یک دیوایس در شبکه از دستور خط فرمان ARP میتوان استفاده کرد. برای مثال:
arp -a
و یا :
arp -a findstr 192.168.1.100
اگر در این لیستها MAC Address آی پی مورد نظر شما یافت نشد، ابتدا آن IP را ping کنید و بعد دستورات فوق را استفاده نمائید. علت هم این است که دستورات فوق تنها ARP table ایی را بر اساس ارتباطات ایستگاه کاری فعلی با شبکه نمایش میدهند و اگر کامپیوتر فعلی هیچ ارتباطی با IP مورد نظر نداشته باشد، خروجی خاصی را نمایش نخواهد داد.
حال اگر با برنامه نویسی بخواهیم اینکار را انجام دهیم با استفاده از تابع API زیر نیز میتوان به همین نتیجه رسید:
[System.Runtime.InteropServices.DllImport("Iphlpapi.dll", EntryPoint = "SendARP")]
internal extern static Int32 SendArp(Int32 destIpAddress, Int32 srcIpAddress, byte[] macAddress, ref Int32 macAddressLength);
public static System.Net.NetworkInformation.PhysicalAddress GetMacFromIP(System.Net.IPAddress IP)
{
if (IP.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
throw new ArgumentException("supports just IPv4 addresses");
Int32 addrInt = IpToInt(IP);
Int32 srcAddrInt = 0;
byte[] mac = new byte[6]; // 48 bit
int length = mac.Length;
int reply = SendArp(addrInt, srcAddrInt, mac, ref length);
byte[] emptyMac = new byte[12];
if (reply != 0)
{
//No MAC Address found for the IP Address
return new System.Net.NetworkInformation.PhysicalAddress(emptyMac);
}
return new System.Net.NetworkInformation.PhysicalAddress(mac);
}
private static Int32 IpToInt(System.Net.IPAddress IP)
{
byte[] bytes = IP.GetAddressBytes();
return BitConverter.ToInt32(bytes, 0);
}
00:0F:8F:F1:EE:40
مک آدرس واقعی دستگاه کارتخوان:
00.64.00.00.5E.7A
این تداخل رخ داده، باعث شده بود که ارتباط با دستگاه کارتخوان قطع شود. همانطور که میدانید سه بایت اول هر مک آدرس میتواند بیانگر شرکت سازندهای باشد. 00:0F:8F مربوط به روترهای سیسکو است.
اشتراکها
راهنمای سریع AngularJS و TypeScript
نظرات مطالب
آموزش LINQ بخش سوم
روش ComapreTo رو هم تست کرده ام منتها این روش هم درست جواب نمیدهد. مثلا دیتای وارد شده در جدول زیر رو در نظر بگیرید:
حال اگر برنامه رو اجرا کنیم خروجی به صورت زیر خواهد بود:
حال اگر برنامه رو اجرا کنیم خروجی به صورت زیر خواهد بود:
همان طور که ملاحظه میفرمایید فقط کدهای 10 و 100 را در خروجی میبینیم و اعداد 15، 25، 55 که بین 10 و 100 هستند در خروجی نمایش داده نشده اند.