مطالب
ایجاد سرویس چندلایه‎ی WCF با Entity Framework در قالب پروژه - 7
خروجی پروژه‌ی WCF Service Library یک فایل DLL است که هنگامی که با کنسول WCF Test Client اجرا می‌شود در آدرسی که در Web.Config تنظیم کرده بودیم اجرا می‌شود. اگر یک پروژه‌ی ویندوزی در همین راه حل بسازیم؛ خواهیم توانست از این آدرس برای دسترسی به WCF بهره ببریم. ولی اگر بخواهیم در IIS سرور قرار دهیم؛ باید در وب‌سایت آن‌را میزبانی کنیم. برای این‌کار از Solution Explorer روی راه حل MyNews راست‌کلیک کنید و از منوی باز شده روی Add -> New Web Site کلیک کنید. سپس مراحل زیر را برابر با شکل‌های زیر انجام دهید:

سپس روی Web Site ایجادشده راست کلیک کنید و از منوی بازشده Property Pages را انتخاب کنید. روی گزینه‌ی Add Reference کلیک کنید، سپس پروژه‌ی MyNewsWCFLibrary را از قسمت Solution انتخاب کرده و دکمه‌ی OK را بفشارید. 

دکمه‌ی OK را بفشارید و از Solution Explorer فایل Web.Config را باز کنید. پیش از تغییرات مد نظر باید چنین محتوایی داشته باشد:

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
</configuration>

متن آن‌را به این صورت تغییر دهید:

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
  <system.serviceModel>
    <serviceHostingEnvironment>
      <serviceActivations>
        <add factory="System.ServiceModel.Activation.ServiceHostFactory" relativeAddress="./HamedService.svc" service="MyNewsWCFLibrary.MyNewsService"/>
      </serviceActivations>
    </serviceHostingEnvironment>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

همان‌‌گونه که مشاهده می‌کنید به وسیله‌ی تگ add factory سرویس‌ها را به وب‌سایت معرفی می‌کنیم. با relativeAddress می‌توانیم هر نامی را به عنوان نام سرویس که در URL قرار می‌گیرد معرفی کنیم. چنان‌که من یه جای  MyNewsService از نام HamedService استفاده کردم. و در صفت  service فضای نام و نام کلاس سرویس را معرفی می‌کنیم. 

اکنون پروژه را اجرا کنید. در مرورگر باید صفحه را به این‌صورت مشاهده کنید:

نیازی به یادآوری نیست که شما می‌توانید این پروژه را در IIS سرور راه‌اندازی کنید تا کلیه‌ی مشتری‌ها به آن دسترسی داشته باشند. هرچند پیش از آن باید امنیت را نیز در WCF برقرار کنید.

توجه داشته باشید که روشی که در این بخش به عنوان میزبانی WCF مطرح کردم یکی از روش‌های میزبانی WCF است. مثلاً شما می‌توانستید به جای ایجاد یک WCFLibrary و یک Web Site به صورت جداگانه یک پروژه از نوع WCF Service و یا Web Site ایجاد می‌کردید و سرویس‌ها و مدل Entity Framework را به طور مستقیم در آن می‌افزودید. روشی که در این درس از آن بهره برده ایم البته مزایایی دارد از جمله این‌که خروجی پروژه فقط یک فایل DLL است و با هر بار تغییر فقط کافی است همان فایل را در پوشه Bin از وب‌سایتی که روی سرور می‌گذارید کپی کنید. 

در بخش هشتم با هم یک پروژه‌ی تحت ویندوز خواهیم ساخت و از سرویس WCF ای که ساخته ایم در آن استفاده خواهیم کرد.

مطالب
سیلورلایت 5 و تاریخ شمسی
از سیلورلایت 5 به بعد، پشتیبانی توکاری از تاریخ شمسی نیز اضافه شده است و من هم کنترل date picker ایی را که برای سیلورلایت 4 درست کرده بودم به این نگارش ارتقاء داده و کلاس تقویم فارسی سفارشی آن‌را با نمونه موجود جایگزین کردم. این تغییرات به خوبی بر روی سیستم من جواب داد و مشکلی نبود؛ تا اینکه یکی از استفاده کنندگان از این کنترل، خطای زیر را بر روی بعضی از کامپیوترهای استفاده کننده، گزارش داد:
Specified time is not supported in this calendar.
It should be between 04/30/1900 00:00:00 (Gregorian date) and 05/13/2029 23:59:59 (Gregorian date), inclusive.
Parameter name: time

به نظر تنظیمات خاص محلی بعضی از این سیستم‌ها سبب بروز این مشکل شده است. برای رفع آن کافی است تغییرات زیر اعمال شوند:

الف) در فایل web.config برنامه یک سطر زیر را اضافه نمائید:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" culture="fa-IR" uiCulture="fa-IR"/>

ب) در Application_Startup برنامه سیلورلایت خود تنظیمات زیر را اعمال کنید:
Thread.CurrentThread.CurrentCulture = new CultureInfo("fa-IR");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fa-IR");

با این تغییرات صرفنظر از تنظیمات محلی کاربر یا سرور مورد استفاده، تقویم شمسی سیلورلایت 5 بدون مشکل در دسترس خواهد بود.
 
اشتراک‌ها
موشکافی ASP.NET 5

ASP.NET 5 is an entirely new web stack, rebuilt from the ground up to run fast, cross-platform, and completely configurable. Join David Fowler, one of the architects of ASP.NET 5, as he goes deep into the core of ASP.NET 5. What's the hosting model? How does the HTTP stack work? How do middleware and NuGet packages get pulled in to compose your application? How do the different servers (IIS, Kestrel, WebListener, etc.) actually work? How can you take advantage of these things to build lean, fast, optimized web apps on the new ASP.NET 5 platform? Come find out!

موشکافی ASP.NET 5
نظرات مطالب
بررسی خطاهای ممکن در حین راه اندازی اولیه برنامه‌های ASP.NET Core در IIS
یکی از شرایطی که در زمان publish برنامه و share کردن برنامه در IIS باعث بروز خطای 502.5 می‌شود  مطلب فعالسازی Development time IIS support می‌باشد.
برای انجام این فعالسازی، تغییر زیر در تگ aspNetCore در فایل web.config بوجود می‌آید که در زمان publish برنامه هم باقی می‌ماند:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    ...
    <aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" startupTimeLimit="3600" requestTimeout="23:00:00" stdoutLogEnabled="false" />
    ...
  </system.webServer>
</configuration>
که باعث بروز 
خطای 502.5  می‌باشد. برای حل این مشکل و همچنین استفاده از قابلیت ذکر شده در زمان توسعه برنامه، پس از publish برنامه در پوشه خروجی به فایل web.config مراجعه کرده تگ  aspNetCore  را به حالت اولیه آن باز می‌گردانیم:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    ...
     <aspNetCore processPath=".\ApplicationName.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    ...
  </system.webServer>
</configuration>
که در آن ApplicationName.exe نام فایل خروجی است که باید با نام مناسب جایگزین گردد.
اشتراک‌ها
تغییرات ASP.NET Core در NET Core 3.0 Preview 5.

New JSON Serialization
In 3.0-preview5, ASP.NET Core MVC adds supports for reading and writing JSON using System.Text.Json. The System.Text.Json serializer can read and write JSON asynchronously, and is optimized for UTF-8 text making it ideal for REST APIs and backend applications. 

تغییرات ASP.NET Core در NET Core 3.0 Preview 5.
نظرات مطالب
ترفندهای یونیکد برای زبان‌های راست به چپ
یک نکته‌ی تکمیلی: یک‌دست سازی encoding تمام فایل‌ها در IDEهای جدید

یکی از مشکلاتی که راست به چپ زبان‌ها با آن سروکار دارند، یک‌دست نبودن encoding فایل‌هاست. تعدادی از آن‌ها اسکی هستند، تعدادی utf8، تعدادی utf8 به همراه BOM و ... . در IDEهای جدید، برای اینکه از ابتدا این فایل‌ها یک‌دست ایجاد شوند، می‌توان از یک فایل editorconfig. قرار گرفته‌ی در ریشه‌ی پروژه با تنظیمات زیر استفاده کرد:
# Code files
[*.{cs,csx,vb,vbx,razor,html,htm,js,md,cshtml,xaml,vbhtml,aspx,txt,asax,ashx,asmx,master,config}]
charset = utf-8-bom
نظرات مطالب
صفحه بندی و مرتب سازی خودکار اطلاعات به کمک jqGrid در ASP.NET MVC
این تنظیمات را برای تغییر content-type مربوط به jqGrid آزمایش کنید:
- برای یک گرید:
$("#contactsList").jqGrid({
                mtype: 'POST',
                ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
- به صورت سراسری:
$.extend($.jgrid.defaults, {
    datatype: 'json',
    ajaxGridOptions: { contentType: "application/json" },
    ajaxRowOptions: { contentType: "application/json", type: "PUT" },
    ajaxSelectOptions: { contentType: "application/json", dataType: "JSON" }
});

$.extend($.jgrid.edit, {
    ajaxEditOptions: { contentType: "application/json" },
    recreateForm: true,
    serializeEditData: function(postData) {
        return JSON.stringify(postData);
    }
});

$.extend($.jgrid.del, {
    ajaxDelOptions: { contentType: "application/json" },
    mtype: "DELETE"
});