۱۳۸۷/۱۱/۱۱

مشكل IIS6 و دريافت فايل‌هاي آفيس 2007


IIS6 فايل‌هايي را كه نشناسد، سرو نخواهد كرد. بنابراين اگر يكي از كاربران مثلا يك فايل docx آفيس 2007 را آپلود كرده باشد، به محض كليك بر روي لينك دريافت فايل، با خطاي زير متوقف خواهد شد:

HTTP Error 404 - File or directory not found

فايل بر روي سرور موجود است اما كاربر قادر به دريافت آن نيست.

براي شناساندن فرمت‌هاي جديد به IIS6 مي‌توان به يكي از دو روش زير عمل كرد:
الف) اضافه كردن mime-type جديد از طريق كنسول IIS
ب) ويرايش كردن فايل MetaBase.xml مربوط به IIS

در هر دو روش فوق نياز است تا با mime-type فايل‌هاي جديد آشنا بود. براي مثال ليست كامل mime-types مربوط به فايل‌هاي آفيس 2007 به صورت زير است:

.docm,application/vnd.ms-word.document.macroEnabled.12
.docx,application/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotm,application/vnd.ms-word.template.macroEnabled.12
.dotx,application/vnd.openxmlformats-officedocument.wordprocessingml.template
.potm,application/vnd.ms-powerpoint.template.macroEnabled.12
.potx,application/vnd.openxmlformats-officedocument.presentationml.template
.ppam,application/vnd.ms-powerpoint.addin.macroEnabled.12
.ppsm,application/vnd.ms-powerpoint.slideshow.macroEnabled.12
.ppsx,application/vnd.openxmlformats-officedocument.presentationml.slideshow
.pptm,application/vnd.ms-powerpoint.presentation.macroEnabled.12
.pptx,application/vnd.openxmlformats-officedocument.presentationml.presentation
.xlam,application/vnd.ms-excel.addin.macroEnabled.12
.xlsb,application/vnd.ms-excel.sheet.binary.macroEnabled.12
.xlsm,application/vnd.ms-excel.sheet.macroEnabled.12
.xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltm,application/vnd.ms-excel.template.macroEnabled.12
.xltx,application/vnd.openxmlformats-officedocument.spreadsheetml.template

روش ب)
ابتدا IIS6 را stop كنيد (در غير اينصورت قادر به ذخيره سازي تغييرات نخواهيد بود):
iisreset /stop
سپس فايل متابيس آن‌را در يك اديتور متني باز كنيد. اين فايل در آدرس زير قرار دارد:
C:\WINDOWS\system32\inetsrv\MetaBase.xml

تگ مربوط به IIsMimeMap را يافته و خطوط فوق را دقيقا به همين صورتيكه ملاحظه مي‌كنيد به آن اضافه نمائيد.



و در آخر IIS را راه اندازي كنيد:
iisreset /start

روش الف)
اين روش نيازي به stop و start وب سرور ندارد و به محض اضافه شدن، به صورت خودكار اعمال خواهد شد اما كمي طولاني‌تر است:
كنسول IIS را باز كنيد
بر روي web sites كليك راست كنيد. (منظور بالاترين سطح ممكن است)
گزينه properties‌ را انتخاب كرده و سپس به برگه http headers‌ مراجعه نمائيد.
در اينجا بر روي دكمه mime-types كليك كرده و در صفحه باز شده بايد تك تك موارد جديد را به صورت دستي وارد نمائيد (در اينجا نيازي به ذكر نقطه مربوط به پسوند فايل نيست)



لازم به ذكر است كه اين نوع mime-types به IIS7 اضافه شده‌اند.