تنظیمات Connection String برای پابلیش برنامه ASP.NET MVC در IIS
با سلام ، من یک وب سایت با ASP.NET MVC و entity framework طراحی کردم. پایگاه داده ای که وب سایت رو باهاش توسعه دادم پایگاه داده ی local هست. به همین جهت در فایل Web.config، کانکشن استرینگ رو به صورت زیر تعریف کردم.
<connectionStrings> <add name="MySiteContext" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=MySiteDb;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> </connectionStrings>
در قسمت Domain یعنی جایی که entity classها و dbContext تعریف شده است هم یک فایل به نام App.config وجود دارد که محتویات آن هم به صورت زیر است:
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework> <connectionStrings> <add name="PadisarContext" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=PadisarDailyReport;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>
حالا من میخوام وب سایت رو بر روی IIS پابلیش کنم و پایگاه داده ام رو هم از localDb ببرم SQL Server Full Edition (این رو هم بگم که با localDb تونستم سایت رو پابلیش کنم و در اون زمینه مشکلی وجود ندارد.) اولین سوال اینکه در دو فایل بالا چه تغیراتی باید رخ دهد. (مثلا برای data source چه چیزی باید قرار دهیم؟ .... ). به طوی کلی connection string رو چطور باید تنظیم کنیم؟ دوم اینکه در SQL Server چه تنضیماتی باید انجام دهیم؟ سوم اینکه تنظیمات مورد نیاز در IIS برای انجام این کار چه چیزایی هستند؟ممنون میشم اگه راهنمایی بفرمایید ......
5 پاسخ
دقیقا، Integrated Security برای موقعی هست که از Account ویندوز موقع Login استفاده می کنید.
در صورت تعریف Login توی دیتابیس، ایا باید مقدار Integrated Security رو false کنم؟؟
بعد اینکه آیا در کد زیر (که در فایل App.config ظاهر شده باید مقدار parameter value رو از mssqllocaldb به نام instanceای که روی دیتابیس نصب شده تغییر بدم؟
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory>
کلا تکلیف defaultConnectionFactory چی میشه؟!!!
سلام رامین جان، برای بردن سایت رو IIS و انتقال بانک از LocalDb به SQL Enterprise یا نسخه های مشابه، شما اول باید یک پشتیبان از روی LocalDb تهیه کنید و روی SQL بازیابی کنید. در قسمت Data Source با توجه به نام کامپیوتر و Instance ای که نصب شده باید اسم رو مشخص کنید. برای مثال:
Data Source=.\ProductionSQL
که نقطه در مثال بالا به کامپیوتر جاری و ProductionSQL به نام Instance اشاره می کنه که با توجه به نصب SQL باید این موارد رو تنظیم کنید. اگر روی هاستی سایت رو قرار میدید اطلاعات مربوط به اتصال SQL در اختیارت قرار میگیره. IIS هم تنظیمات خاصی نداره، فقط باید حتماً داخل SQL یه Login تعریف کنی و بهش دسترسی های لازم رو برای بانک مورد نظر بدی. تو Connection String هم باید از User Id و Password برای مشخص کردن اطلاعات Login استفاده کنی.
اون قسمت نیازی به تغییر نداره، فقط تو قسمت Connection String قسمت providerName رو به System.Data.SqlClient تغییر بدید.