آی تی نرد

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

خطای 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

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