در بعضی از وبسایتهای طراحی شده با زبان برنامه نویسی .Net ، خطای Configuration Error مرتبط با mysql provider مشاهده میگردد و راه حل این مشکل عدم inherit فایل web.config از machine.config در این مورد خاص میباشد ، جهت انجام این مهم میتوانید نسبت به اضافه نمودن تگ remove کد مرتبط با mysql providerدر web.config اقدام نمایید .
این نکته نیز قابل ذکر میباشد که دلیل قرار گرفتن کد mysql provider در فایل machine.config در سرور ، تمایل برخی از کاربران برای استفاده از دیتابیس mysql در اپلیکیشن .Net وبسایت میباشد ، در زیر خطای نمایش داده شده در یک وبسایت نمونه (امکان مشاهده خطاهای مشابه دیگری نیز وجود دارد) و در مرحله ی بعد تغییرات لازم در فایل web.config قابل مشاهده میباشد.
خطای اولیه نمایش داده شده در وبسایت:
به دلیل اینکه بصورت پیشفرض ویژگی Mysql Connect برای اپلیکیشن های ASP در فایل machine.config فعال شده است، هنگام اجرای اپلیکیشن های ASP به provider های موردنیاز Mysql Connect رجوع می شود، در صورتی که این provider ها در پوشه Bin اپلیکیشن مربوطه وجود نداشته باشند خطای مذکور را دریافت خواهیم کرد. راه حل رفع این مشکل غیر فعال کردن این ویژگی از طریق تغییر در فایل web.config و یا قرار دادن provider های مذکور در پوشه Bin است. جزییات بیشتر در ادامه شرح داده شده اند :
MySql استانداردهایی را برای اپلیکیشن های .Net فراهم می کند تا به کمک آن برنامه نویسان بتوانند از این نوع دیتابیس نیز در اپلیکیشن های خود استفاده کنند. بدین منظور APSNET سیستم Membership را معرفی کرده است. این سیستم بر اساس مفهوم Membership، ,Profile و Role Providers است که همگی در کنار هم تمامی توابع لازم را فراهم می کنند.
راحت ترین راه جهت بکارگیری دیتابیس Mysql در Asp.net استفاده از درایور ADO.NET و ارجاع به فایل MySQl.Data.dll است. این ارجاع بصورت پیشفرض در فایل machine.config فعال شده است.
این نکته نیز قابل ذکر میباشد که دلیل قرار گرفتن کد mysql provider در فایل machine.config در سرور ، تمایل برخی از کاربران برای استفاده از دیتابیس mysql در اپلیکیشن .Net وبسایت می باشد .
نکاتی در رابطه با فایل web.config و نحوه تبعیت آن از فایل Machine.config
فایل machine.config فایل حاوی تنظیمات پیکربندی اصلی و پیشفرض بر روی سیستم است و تمامی اپلیکیشن های دات نت تنظیمات اولیه و پیشفرض خود را از این فایل به ارث می برند. بر روی هر سرور به ازای هر نسخه از دات نت فقط یک فایل machine.config وجود دارد
فایل web.config تمامی تنظیمات موجود در machine.config را به ارث می برد ، اپلیکیشن های Asp.net با استفاده از فایلی به نام web.config می توانند برخی از این تنظیمات را تغییر دهند.
تنظیمات فایل machine.config بر تمامی اپلیکیشن های ASP.Net سرور اعمال می شود درحالی که تنظیمات قرار داده شده در web.config فقط بر روی یک وب اپلیکیشن خاص اعمال می شود.
پوشه های داخل یک وب اپلیکیشن نیز می توانند web.config مخصوص به خود را داشته باشند. فایل machine.config در بالاترین سطح سلسله مراتب پیکربندی قرار دارد، در مقابل web.config بر روی تنظیمت machine.config برتری داشته و موراد تعریف شده در این فایل جایگزین تنظیمات پیشفرض می شوند.
لازم به ذکر است فایل web.config موجود در wwwroot واسطه ای بین machine.config و web.config ایجاد شده برای اپلیکیشن های موجود در پوشه های دیگر وب سایت است و در حالت پیشفرض به تمامی صفحات پوشه جاری و زیر پوشه ها ی آن اعمال می شود.
برخی از تنظیماتی که در کنسول IIS Management انجام می شود بر فایل web.config موجود در root اعمال می شوند.
برای رفع این مشکل دو راه حل وجود دارد :
راه حل اول :
- قرار دادن تگ Remove مرتبط با Mysql provider در فایل web.config، منجر می شود که فایل web.config در این مورد استثنا از فایل machine.config تبعیت نکند. بدین منظور کافیست قطعه کد زیر را در فایل web.config تحت تگ <configuration> ذیل بخش <system.web> قرار دهید.
<membership>
<providers>
<remove name="MySQLMembershipProvider" />
</providers>
</membership>
<roleManager>
<providers>
<remove name="MySQLRoleProvider" />
</providers>
</roleManager>
راه حل دوم :
- با قراردادن فایلهای Provider های مذکور در پوشه Bin اپلیکیشن مربوطه،به نحوی فرایند ارجاع به این Provider ها بدون مشکل انجام می شود.
بدین منظور می توانید Provider های زیر را در پوشه Bin وب سایت خود آپلود کنید. این فایلها در دو نسخه از دات نت 4.0 و 4.5 ارایه شده اند.