آی تی نرد

اشتراک اطلاعات و تجربیات در زمینه ی توسعه ی دات نت و البته شیرپوینت

تاریخ و زمان شمسی در MVC بدون نیاز به استفاده از تمپلیت

shamsi datetime

حل مشکل تاریخ و زمان شمسی در اکثر پروژه های نرم افزاری که کار میکنیم یک کار مازاد به شمار میاد که باید در گوشه ای از ذهنمون در نظر داشته باشیم و معمولا هم در انتهای پروژه نسبت به رفع اون اقدام میکنیم. البته هر کسی روشی داره و بالاخره این مشکل رو حل میکنه. خود من یادم هست که حدود 8 الی 9 سال پیش قسمت های سال و ماه و روز تاریخ شمسی رو به صورت عددی کنار هم میچسبوندم و توی جدول نگهداری میکردم که البته کار اشتباهی بود.

بهترین روش این هست که هر مقداری معادل کاربردش در سیستم و با نوع متناسب نگهداری بشه و مقادیر در زمان و لایه ی نمایش تغییر کنند. به هر حال مثلا وقتی میگیم تاریخ تولد، نوعش هم باید تاریخ باشه.

توی پروژه های MVC معمولا برای حل این مسئله یک تمپلیت برای نمایش و یکی هم برای ویرایش(که در نهایت مقدار به سرور ارسال میشود) استفاده می کنیم که در تمپلیت نمایش(DisplayTemplate) تاریخ رو تبدیل میکنیم و بعد نشون میدیم و در ویرایش(EditorTemplate) هم به همین صورت اما فقط مقدار میلادی رو توی یک فیلد مخفی نگهداری میکنیم و بعد در زمان Submit اون مقدار رو ارسال میکنیم. خود این کارها واقعا وقت گیر، حوصله بر، دست و پاگیر و اضافی هست، البته در نهایت برای انتخاب تاریخ مجبوریم از یک DatePicker در EditorTemplate استفاده کنیم ولی همانطور که در ادامه میخونید دیگر نگرانی تبدیل اون از شمسی به میلادی رو در سمت کلاینت رو نخواهیم داشت.

به نظر من بهترین کار این هست که تمامی این تبدیل ها رو به قسمتی از سیستم بدیم و بزاریم خودش تشخیص بده و مدیریت کنه و ما هم این مشغله رو از ذهنمون دور بندازیم.

توی یکی از مطالبم مقدمه ای در مورد کالچر در Asp.net Web form و سیستم Blogengine نوشتم که از همون استراتژی هم میشه توی MVC استفاده کرد به هر حال هر دو زیرساخت Asp.net رو دارند اما فقط نحوه ی پیاده سازی برخی ساختارهای زیرین در دو تکنولوژی متفاوت هست.

بیشتر...

خطای 400 و XML Parsing Error: no element found در شیرپوینت

توی سنترال ادمین شیرپوینت 2010 مشغول ایجاد یک Web Application جدید بودم که در حین این کار با خطای زیر مواجه شدم:

HTTP 400 - Bad Request (Request Header too long)

اولین کاری که کردم همین خطا رو توی نت سرچ کردم که متوجه شدم معمولا این خطا زمانی در شیرپوینت اتفاق میوفته که کاربری که با اون لاگین کردید جزء گروههای زیادی در اکتیو دایرکتوری هست که می بایست یا تعداد این گروه ها کمتر بشه یا طول پیشفرض Request در رجیستری ویندوز بیشتر بشه.

خب در صورتی که بخواید طول Request رو زیاد کنید میتونید کد زیر رو در یک فایل با پسوند reg ذخیره و اجرا کنید:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters] 
"MaxFieldLength"=dword:0000fffe 
"MaxRequestBytes"=dword:0007a120

من هم همین کار رو انجام دادم اما متاسفانه با خطای جدید زیر مواجه شدم: 

XML Parsing Error: no element found
Location: http://.../_layouts/error.aspx?ErrorText=Failed...
Line Number 1, Column 1:

و اونقدر طول این خطا زیاد بود که به خطای قبلی حق دادم که بگه طول Request زیاد هست. مقداری جستجو کردم اما به راه حل دقیقی نرسیدم به همین دلیل لاگ خطاهای شیرپوینت رو بررسی کردم و احتمال دادم که خطای زیر باعث به وجود اومدن این مشکل هست:

Failed to call GetTypes on assembly Microsoft.Office.InfoPath.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. Could not load file or assembly 'Microsoft.Office.InfoPath, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies....

خب همین خطا رو با کیورد شیرپوینت سرچ کردم و متوجه شدم مشکل همین جاست و زمانی که شیرپوینت 2010 نصب هست، نصب آفیس 2013 و به خصوص اینفوپس 2013 کار درستی نیست و این مشکل رو به وجود میاره به همین دلیل اسمبلی های این برنامه رو از پوشه ی C:\Windows\assembly\GAC_MSIL پاک و دوباره سعی کردم یک وب اپلیکیشن ایجاد کنم و خوشبختانه این بار بدون هیچ مشکلی عملیات انجام شد.

برای رفع این مشکل میباست اسمبلی های زیر رو در حالی که دسترسی ادمین دارید از پوشه ی اشاره شده پاک کنید و یا خود برنامه ی اینفوپس 2013 رو حذف کنید در هر حال با حذف این اسمبلی ها اینفوپس هم از کار خواهد افتاد:

Policy.14.0.Microsoft.Office.InfoPath
Policy.14.0.Microsoft.Office.InfoPath.Client.Internal.Host
Policy.14.0.Microsoft.Office.InfoPath.FormControl

در انتها هم IIS رو با دستور زیر در CMD ریست کنید:

iisreset /noforce

امیدوارم که در صورتی که با این مشکل مواجه شدید این راه کار بهتون کمک و در وقتتون صرفه جویی کنه.

نصب استاندارد و اصولی شیرپوینت 2010 برروی windows server 2012 R2

در این مطلب به نصب شیرپوینت 2010 سرور به صورت کاملا استاندارد(Production Environment) برروی جدیدترین ویندوز سرور یعنی 2012 r2 خواهم پرداخت. ضمن اینکه نصب نسخه ی 2013 شیرپوینت نیز به همین صورت خواهد بود فقط پیش نیازهای اون مقداری متفاوت هست، در مطالب بعدی سعی میکنم بیشتر در مورد نصب 2013 روی 2012 R2 توضیح بدم یه نکته ای داره که البته اگر مشتاق باشید میتونید توضیحات کامل رو توی این مطلب مطالعه کنید: how-to-install-sharepoint-2013-on-windows-server-2012-r2

از Sql Server 2012 SP1 نیز استفاده خواهم کرد.

آماده سازی برای شروع:
ابتدا سعی کنید تمام نرم افزارهای مورد نیاز رو از این مطلب دانلود کنید و آماده داشته باشید و ویندوز رو هم میتونید از این لینک دانلود کنید. برای فعال سازی ویندوز هم از برنامه ی Microsoft Toolkit 2.5 Beta 5 و یا جدیدتر استفاده کنید.

ابتدا باید بگم تنها سرویس پک 2 شیرپوینت قابل نصب برروی این ویندوز می باشد. یعنی ستاپ ادغام شده به همراه سرویس پک 2 که البته یه خورده گیر آوردنش مشکل هست اما من اون رو از تورنت دانلود و مستقیم کردم از سایت رپیدباز می تونید در صورتی که عضو باشید دانلود کنید: دانلود شیرپوینت سرور 2010 سرویس پک 2

خیلی قبل تر از اجرای فایل ستاپ شیرپوینت:
بهتر هست برای هر پلتفرم یعنی Sql, SharePoint,Domain Controller یک سرور مجزا داشته باشید که توصیه میشود از یک سرور فیزیکی به همراه دو VM استفاده کنید. اما به صورت Single هم میشه نصب کرد. در صورتی که میتونید از سه سرور استفاده کنید سرور هاست رو به عنوان دومین کنترلر قرار بدید و سه کاربر در اکتیودایرکتوری ایجاد کنید(بهتر هست در حالت Single هم از این سه کاربر استفاده کنید در غیر اینصورت میتوانید از کاربر ادمین هم استفاده کنید):

  1. یک کاربر با دسترسی کاملا پایین یعنی تنها در گروه Domain Users کفایت می کند ایجاد کنید برای مثال با نام SqlServices که برای تمام سرویس های Sql استفاده خواهد شد.
  2. کاربری با نام مثلا SPFarm که به عنوان مدیر فارم استفاده خواهد شد و این رو هم در صورتی که شیرپوینت رو در یک سرور جداگانه نصب میکنید تنها کافی هست در دومین کنترلر به گروه Domain Users اضافه شود. در غیر اینصورت به گروه مدیران داخلی و نه Domain Admin اضافه کنید. در صورتی که شیرپوینت در سرور جداگانه قرار هست نصب شود این کاربر رو به گروه مدیران داخلی اون سرور اضافه کنید. البته این رو بگم که میتونه کاربر مدیر فارم، مدیر ویندوز هم نباشد اما می بایست گروهی با دسترسی های مورد نیاز ایجاد شود و به نظرم لازم نیست و همین قدر امنیت هم کفایت میکند :)
  3. در نهایت هم کاربری برای نصب و پیکره بندی شیرپوینت مثلا با نام SPAdmin با دسترسی پایین در اکتیو ایجاد کنید اما توجه کنید که در سرور شیرپوینت و Sql می بایست در گروه مدیران داخلی باشد و در سرور Sql هم مجوزهای dbcreator و securityadmin رو از طریق Managment Studio به اون اضافه کنید. مطمئنا در محیط تولیدی و استاندارد کاربر ادمین دومین کنترلر به مدیر شیرپوینت برای نصب اون داده نخواهد شد و اصلا هم نیازی به این کار نیست و کاربر Administrator بسیار حیاتی می باشد.

بسیار خب بعد از راه اندازی دومین و افزودن کاربران اشاره شده و ایجاد سرورهای مجازی شیرپوینت و Sql بهتر هست ابتدا با نصب Sql در سرور خودش شروع کنید، ابتدا با کاربر SPAdmin وارد سرور شوید و در صورتی که فقط برای استفاده ی معمولی شیرپوینت از Sql استفاده خواهید کرد تنها کافیست تا فیچرهای Database Engine و Management Studio Complete رو در هنگام نصب تیک بزنید. بعد از نصب، پورت 1433 رو در هردو صورت دسترسی ورودی و خروجی در فایروال باز کنید چون این پورت مخصوص Sql می باشد.

حالا با کاربر SPAdmin وارد سرور مجازی شیرپوینت بشید و ابتدا پیشنیازهای اون رو طبق این مطلب به ترتیب یا با استفاده از اسکریپت پاورشل موجود در مطلب نصب کنید. سپس در پوشه ی ستاپ شیرپوینت فایل "PrerequisiteInstaller.exe" رو اجرا کنید و تا انتها ادامه بدید تا با خطا مواجه بشید! خب ما فقط از این ابزار برای افزودن فیچرهای ویندوز سرور مورد نیاز شیرپوینت استفاده کردیم و نه نصب پیشنیازها.

بیشتر...

راهکار تغییر مجوز لیستها و زیرسایت هایی که ارث بری آنها قطع شده برای شرپوینت 2010

حتما تا به حال شده است که به دلایل مختلفی ارث بری مجوزهای یک یا چندین لیست یا زیرسایت را قطع کرده باشید و زمانی که نیاز به تغییر مجوزهای این موارد داشته باشید، یافتن انها و تنظیم تک تک این لیست ها و زیرسایتها کار راحتی نخواهد بود.
شاید مجبور باشید ارث بری انها را بازگردانید و یا به صورت مجزا مجوزهای آنها را تغییر دهید که در هر دو صورت کار سخت و طاقت فرسایی خواهد بود، و از انجایی که خود شرپوینت ابزار و اینترفیسی برای این کار ندارد شما مجبور به انجام یکی از دو کار ذکر شده هستید.

این راهکار یا ابزار با فراهم کردن اینترفیسی کاملا شرپوینتی و کاربر پسند این مشکل را برای شما آسان خواهد کرد، و شما کافیست تا با انتخاب کاربران مورد نظر وارد صفحه ی تنظیمات شوید و تغییرات مورد نظر خود را طبق راهنمای موجود همانند محیطی که در آن مجوزهای کاربران را تغییر میدهید در محیط این راهکار هم مجوزهای کاربران را برروی لیست ها و زیرسایتهای مورد انتخاب شما تغییر دهید.

بیشتر...


نصب مرحله به مرحله ی SharePoint Server 2010 به صورت Server Farm بر روی Windows 7 64bit

من خودم به عنوان یه Developer ترجیح میدم که شرپوینت رو روی ویندوز 7 ی نصب کنم که همه ی کارهای فنیم رو با اون انجام میدم منظورم اینه که کار کردن با ویندوزهای سرور اون هم با اون سنگینیش و کلی اضافات مثل اکتیودایرکتوری و غیره برای من به شخصه اذیت کننده هست. بنابراین من از طریق روشی که خیلی هم سخت و فنی نیست که در ادامه شرح خواهم داد شرپوینت رو روی ویندوز 7 نصب میکنم(جسارتا من توی این مقاله مخاطب خودمو یه Nerd در نظر گرفتم)، البته ناگفته نماند که در محیط های سازمانی و Production این روش درست نیست و بهتره به صورت نرمال و روی ویندوز سرور نصب بشه.

آماده سازی برای نصب شرپوینت:

ابندا بهتره که لیست تمام نرم افزارهایی رو که من در این جا گذاشتم آماده داشته باشید. سعی میکنم لینک دانلودش رو هم قرار بدم که دردسر نکشید:

  1. Windows 7 x64 SP1
  2. Sharepoint Server 2010
  3. Sql Server 2008 R2 OR Sql Server 2012

و پیش نیاز های شرپوینت که برای SQL 2008 و 2012 یکی هست:

  1. Microsoft Sync Framework Runtime v1.0 (x64)
  2. SQL Server 2008 Native Client
  3. Windows Identity Framework (Win2008 R2)
  4. ADO.NET Data Services v1.5 CTP2 (Win2008 SP2)
  5. Microsoft Chart Controls for the Microsoft .NET Framework 3.5
  6. Microsoft SQL Server 2008 Analysis Services ADOMD.NET

خب پس از نصب ویندوز، SQL Server رو نصب کنید که حداقل ویژگیهایی که میتونید تیک بزنید Database Engine و Managment Tools هست که مابقی مثل Reporting Service و غیره بستگی به نیاز شما داره.

بیشتر...