إطار الكيان مع سلسلة اتصال رمز أولى إلى قاعدة بيانات عن بُعد

StackOverflow https://stackoverflow.com/questions/19852836

سؤال

أنا أعمل على جهاز محلي (تطبيق ASP.NET MVC 4) ولكن الآن أريد أن أبدأ في استخدام خادم SQL للشركة ، لذا أحتاج إلى تغيير سلسلة الاتصال من أجل توصيلي بالخادم البعيد.

الإعداد هو:

  • لدي اتصال VPN حيث أستخدم عنوان IP ، لا يمكنني إظهار IP الدقيق ، لذلك دعنا نقول - xxx.xxx.xxx.xxx
  • لدي اسم مستخدم وكلمة مرور من أجل الاتصال بـ VPN - VPNUSERNAME/VPNPASSWORD
  • عندما أستخدم Microsoft SQL Server Management Studio للاتصال بالخادم البعيد ، أستخدم نفس IP الذي أستخدمه للاتصال بـ VPN - XXX.XXX.XXX.XXX
  • لدي اسم مستخدم وكلمة مرور مختلفة لخادم SQL - SqluserName/SQLPassword

لديّ سلسلة اتصال موجودة أستخدمها للاتصال بالخادم على جهاز الكمبيوتر الخاص بي ، لذلك اعتقدت أنه سيكون كافياً لتغيير المعلمات هناك مثل:

<add name="ProjectName.DAL.MyDbContext"
     providerName="System.Data.SqlClient"
     connectionString="Data Source=xxx.xxx.xxx.xxx;
     Initial Catalog=DatabaseName;Integrated Security=True;         
     MultipleActiveResultSets=True;
     user id=SQLUsername;password=SQLPassword;App=EntityFramework" />

لذا فإن التغييرات من سلسلة الاتصال التي تعمل وتوصيلني بخادمي المحلي هي اثنان:

  1. Data Source= xxx.xxx.xxx.xxx - أنا أستخدم IP. هنا أتساءل عما إذا كان IP نفسه كافياً. هل ينبغي أن أستخدم http://xxx.xxx.xxx.xxx أو فقط IP على ما يرام؟
  2. user id=SQLUsername;pasword=SQLPassword - أنا أستخدم نفس اسم المستخدم وكلمة المرور كما في Management studio من حيث يمكنني الاتصال بنجاح بخادم إزالة من خلال توفير xxx.xxx.xxx.xxx كاسم الخادم واستخدام SQLUSERNAME/SQLPASSWORD تحت SQL Server Authentincation.

لكي أكون واضحًا - تحت استوديو الإدارة ، ليس لدي أي مشاكل في الاتصال بالخادم البعيد. ومع ذلك ، عندما أقوم بتغيير سلسلة الاتصال إلى ما نشرته أعلاه في بلدي HomeController حيث لدي منطق بسيط للغاية فقط للتحقق من تنفيذ المكالمة إلى قاعدة البيانات:

private MyDbContext db = new MyDbContext();

        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View(db.Users.ToList());
        }

أحصل على 3 استثناءات:

  1. sqlexception (0x80131904): فشل تسجيل الدخول للمستخدم 'vpnusername'
  2. ProviderInciptibleException: لم يعيد المزود سلسلة providermanifesttoken.
  3. ProviderInciptibleException: حدث خطأ أثناء الحصول على معلومات مزود من قاعدة البيانات. يمكن أن يكون سبب ذلك إطار عمل الكيان باستخدام سلسلة اتصال غير صحيحة.

لذلك إلى جانب ذلك ، في رأيي وكما يخبر الاستثناء رقم 3 أن المشكلة هي الطريقة التي أستخدم بها سلسلة الاتصال التي تهمني أيضًا Number 1 الاستثناء الذي يقول أن تسجيل الدخول فشل ولكن ليس من أجل sqlusername الخاص بي ولكن لاسم VPNUSERNAME. كما قلت - أنا حقًا أستخدم اتصال VPN وأستخدم نفس IP - xxx.xxx.xxx.xxx للاتصال بكل من VPN وخادم SQL (من استوديو الإدارة).

أي فكرة عن كيفية حل هذا؟

هل كانت مفيدة؟

المحلول

إزالة Integrated Security=True من سلسلة الاتصال الخاصة بك وأنت تحاول الاتصال باسم مستخدم/كلمة مرور خادم SQL

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top