‫۸ سال و ۷ ماه قبل، دوشنبه ۱۰ اسفند ۱۳۹۴، ساعت ۲۲:۲۲
- در کانفیگ کدهای شما قسمت زیر موجود نیست (مربوط است به Cross-Origin Request یا Cors و برای دسترسی به آن از طریق وب ضروری است):
      <behaviorExtensions>
        <add name="CorsSupport" type="WebHttpCors.CorsSupportBehaviorElement, WebHttpCors, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      </behaviorExtensions>
کدهای WebHttpCors کمی بالاتر ارسال شده‌است.
- همچنین نحوه‌ی خطایابی و تفسیر این کدها نیز مهم هستند (^ و ^ و ^).
‫۸ سال و ۷ ماه قبل، دوشنبه ۳ اسفند ۱۳۹۴، ساعت ۰۲:۲۱
در حالت معمولی نوشتن در Response، برنامه‌های دانلود منیجر امکان باز کردن چندین ترد را نخواهند داشت؛ چون مفهوم Range: bytes را پیاده سازی نکرده‌اید (به همین جهت کند به نظر می‌رسد). یک نمونه پیاده سازی این مفهوم برای ASP.NET MVC در اینجا مطرح شده‌است (نکات آن عمومی است و سورس آن‌را بررسی کنید قابل استفاده‌ی در وب فرم‌ها هم هست).
‫۸ سال و ۷ ماه قبل، شنبه ۱ اسفند ۱۳۹۴، ساعت ۱۵:۳۷
پروژه‌ی دیگری هست از همین گروه به نام mass transit. این پروژه، یک زیر شاخه‌ی ساخت گردش کاری به نام « Automatonymous » هم دارد؛ با این مستندات. به تست‌های سورس آن نگاه کنید، مثال NHibernate هم در آن لحاظ شده‌است.
این ایمیل حاصل عملیات «Create new client id» است که در ابتدای مطلب توضیح داده شد (و این «ایمیل Client ID ایجاد شده در قسمت قبل» در همان تصویری که «دکمه‌ی Add» آن با یک دایره‌ی قرمز مشخص شده، باید وارد و Add شود. حاصل این Add کردن در لیست User management نمایش داده می‌شود).
‫۸ سال و ۷ ماه قبل، شنبه ۱ اسفند ۱۳۹۴، ساعت ۰۳:۳۳
- همیشه باید احتمال نفوذ پذیر بودن قسمت‌های مختلف برنامه را داد. وجود یک سطح امنیتی بیشتر به هیچ عنوان ضرری ندارد.
- اگر اطلاعات دسترسی را در ابتدای کار در دسترس دارید، مابقی کار تزریق اطلاعات و پر کردن جاهای خالی است.
- ممکن است دسترسی حرکت از یک مرحله به مرحله‌ی بعد، نیازمند محاسبات خاصی فراتر از سطح دسترسی‌های معمولی سیستم باشد. مثلا به یک کاربر خاص بدون دسترسی به پنل مدیریتی سیستم، امکان برگشت زدن یا تائید را داد. در یک چنین حالتی یک گردش کاری، سطح دسترسی محاسباتی خاص خودش را نیاز دارد.
- یک گردش کاری را در یک scheduled job پس زمینه هم می‌شود اجرا کرد. بنابراین طراحی اصولی آن به همین شکل است (و غیر وابسته به فناوری خاصی).
‫۸ سال و ۷ ماه قبل، سه‌شنبه ۲۷ بهمن ۱۳۹۴، ساعت ۱۳:۳۱
- در IISهای جدید (از نگارش 7 به بعد) xlsx به صورت پیش فرض در IIS تعریف شده‌است و مشکلی با آن نیست و نیازی به تعریف مجدد ندارد:


- برای IIS 6 : «مشکل IIS6 و دریافت فایل‌های آفیس 2007» 

+ بهتر است با ابزارهای Web Developer مرورگرها بررسی کنید دقیقا چه خطایی دریافت می‌کنید.

‫۸ سال و ۷ ماه قبل، جمعه ۲۳ بهمن ۱۳۹۴، ساعت ۱۳:۱۰
یک نکته‌ی تکمیلی
در C# 6 می‌توان کد نهایی مطرح شده را به صورت زیر خلاصه کرد:
public class Currency
{
  public string CurrencyName { get; } 
  public string CountryName { get; }

  public Currency(string paramCurrencyName,string paramCountryName)
  {
     CurrencyName= paramCurrencyName;
     CountryName = paramCountryName;
  }
}
‫۸ سال و ۸ ماه قبل، یکشنبه ۱۸ بهمن ۱۳۹۴، ساعت ۱۵:۵۷
در مطلب «نکات کار با استثناءها در دات نت» به این موارد بهتر پرداخته شده‌است:
«... در واقع استثنا‌ها حالت‌هایی هستند که غیرقابل پیش‌بینی هستند. این حالت‌ها می‌توانند یک خطای منطقی از طرف برنامه‌نویس و یا چیزی خارج کنترل برنامه‌نویس باشند (مانند خطاهای سیستم‌عامل، شبکه، دیسک). یعنی در بیشتر مواقع این نوع خطاها را نمی‌توان مدیریت کرد ...»
و یا
« ... در واقع استثناء‌ها بستگی به حالت‌های مختلفی دارد. در مثال اول وجود فایل حیاتی است ولی در حالت دوم بدون وجود فایل نیز برنامه می‌تواند به کار خود ادامه داده و فایل مورد نظر را از نو ایجاد کند ...»

بنابراین «حیاتی بودن» یک شرط در حال بررسی، معیاری هست برای صدور استثناء یا مدیریت آن. اگر حیاتی است، باید در همان نقطه کار خاتمه پیدا کند، استثناء مدیریت نشود و یا استثنایی مشخص صادر شود ( fail fast ).
‫۸ سال و ۸ ماه قبل، یکشنبه ۱۸ بهمن ۱۳۹۴، ساعت ۱۵:۲۰
یک نکته‌ی تکمیلی
اگر از IISهای جدید استفاده می‌کنید، می‌توان فیلتر عنوان شده‌ی در این بحث را حذف و از ماژول Url Rewrite خود IIS استفاده کرد.
الگویی که در بسیاری از سایت‌ها در مورد آن بحث شده‌است به صورت زیر است:
<system.webServer>
  <rewrite>
    <rules>
      <rule name="Enforce WWW" patternSyntax="ECMAScript" stopProcessing="true">
           <match url=".*" />
           <conditions>
                  <add input="{CACHE_URL}" pattern="^(.+):\/\/(?!www\.)(.*)" />
          </conditions>
          <action type="Redirect" url="{C:1}://www.{C:2}" redirectType="Permanent" />
       </rule>      
    </rules>
  </rewrite>
</system.webServer>
این الگو با IIS 7.5 کار نمی‌کند و خطای زیر را می‌دهد:
HTTP Error 500.50 - URL Rewrite Module Error.
The expression "{C:1}://www.{C:2}" cannot be expanded.
برای رفع آن باید از الگوی زیر استفاده کرد:
        <rule name="Enforce WWW" patternSyntax="ECMAScript" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{CACHE_URL}" pattern="^(.+):\/\/(?!www\.)(.*)" />
            <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
          </conditions>
          <action type="Redirect" url="https://www.dntips.ir/{R:0}" redirectType="Permanent" />
        </rule>
همچنین در این الگو با توجه به تعریف منفی localhost، برای آزمایش لوکال برنامه، مشکلی نخواهید داشت.
به علاوه باید دقت داشت که ماژول Url rewrite به صورت پیش فرض نصب نیست و باید از طریق web platform installer نصب شود.
HTTP Error 500.19 - Internal Server Error
Error Code 0x8007000d
اگر خطای فوق را مشاهده کردید به معنای عدم نصب ماژول Url rewrite بر روی سرور است.