[.net] FileNotFoundException مع منشئ SPSite



Answers

حلل هدف النظام الأساسي في خصائص الإنشاء إلى x64 حل هذه المشكلة لي على SharePoint 2010.

Question

أحاول إنشاء مثيل SPSite على ملقم المزرعة في عملية مخصصة (MyApp.exe) وأعطيه كمعلمة URI بالكامل ( http: // mysite: 80 / ). لقد قمت أيضًا بالتأكد من أن الحساب الذي يقوم بتشغيل MyApp.exe هو Site Collection Administrator .

ومع ذلك ، لا يمكنني تقديم مثال لـ SPSite مهما أحاول القيام به. دائما يلقي FileNotFoundException .

أي شخص حصل على فكرة؟

تتبع المكدس:

في Microsoft.SharePoint.SPSite..ctor (مزرعة SPFarm ، Uri requestUri ، context منطقي ، SPUserToken userToken)
في Microsoft.SharePoint.SPSite..ctor (طلب سلسلةUrl) في MyCompanyName.Service.HelperClass.GetItemStateInSharePoint (عنصر SharePointItem) في C: \ Workspaces \ MyCompanyName \ Development \ Main \ MyCompanyName.SharePoint \ Service \ HelperClass.cs: سطر 555

ملاحظة جانبية أخرى ... لدي مجموعة Web Application + Site التي يمكنني الوصول إليها من خلال المتصفح دون أي مشكلة.




لقد واجهنا نفس المشكلة قبل بضعة أيام ، وكان الحل هو تعيين التطبيق ، الذي يحاول إنشاء كائن SPSite ، لاستخدام AppPool نفس تطبيق الويب Sharepoint.

آمل أن يساعد.




كان لي نفس القضية. كنت أرغب في تشغيل تطبيق وحدة التحكم مع معرف المستخدم الخاص بي. أنا مالك تطبيق الويب + مشرف مزرعة. لا يزال غير قادر على تشغيل التطبيق.

تم حل المشكلة بواسطة

  1. تغيير هدف النظام الأساسي في خصائص الإنشاء إلى x64

  2. في إعدادات الموقع -> المستخدمين والأذونات -> كان مديرو مجموعة الموقع هناك اسمين. إزالة اسم آخر وبدأت العمل.




كانت لدينا نفس هذه المشكلة ، لكنني على دراية بالأسباب المختلفة ، إليك ملخص:

  1. هل يمكن أن يكون أخطأت في كتابة أو أدخلت على خلاف ذلك عنوان خاطئ
  2. ليس لدى حساب المستخدم الذي يقوم بتشغيل العملية الأذونات المطلوبة ، وهي: Read Permission إلى موقع SharePoint ، و dbo من DB SharePoint Config ، و Content db.
  3. يجب أن تكون العملية عملية 64 بت (الافتراضي هو 64 بت "أي وحدة المعالجة المركزية") عند بناء على خادم 64 بت.
  4. يجب أن تستهدف العملية .NET 3.5



في حالتي كانت بالتأكيد مشكلة أذونات في الحساب الذي قمت بتسجيل الدخول به إلى windows.

جرب هذا الأمر في SharePoint Management Shell الذي يعمل كمسؤول:

Get-SPSite " http://yoursite/yourcollection "

إذا حصلت على أخطاء ، فقم بتسجيل الدخول إلى خادم SharePoint كمستخدم تجمع التطبيقات أو الحساب المستخدم لتثبيت SharePoint وجرب الأمر أعلاه مرة أخرى.

إذا كان يعمل ، فأنت تعرف أن حسابك السابق به مشكلة في الأذونات. لإصلاح المشكلة ، قم بتشغيل هذا الأمر في إطار shell نفسه وقم بتوفير الحساب الذي تريد استخدامه في VS:

Add-SPShellAdmin -UserName Domain \ User




إذا كان تطبيق وحدة التحكم يصل إلى SharePoint 2010 ، فتأكد من أن "هدف الإنشاء" للمشروع هو x64 وأن .NET Framework هو 3.5.




قد لا يكون التبديل إلى NUnit خيارًا للجميع.
في حالتي ، كانت المشكلة أنني كنت على خادم 64 بت ، كان لي أي وحدة المعالجة المركزية فحص (لذلك كان اختيار الإصدار الصحيح) ولكن تم تعيين "إعدادات الاختبار" إلى "فرض الاختبارات لتشغيل في عملية 32 بت" (GAH! )

في MSTest ، انتقل إلى TEst-> Edit Test Settings-> Trace and Test Impact.
اختيار المضيفين.
تأكد من تشغيل ضد الإصدار الصحيح.

هنا قائمتي المرجعية لـ VS2010 SP1 ، MSTest.

  • تحتاج إلى SP1 بحيث يمكنك توجيه الاختبارات إلى .NET 3.5. لن يعمل مع .NET 4.0
  • تأكد من أن تحميل الموقع أطلق الموقع مباشرة من محرر VS2010 ، لأنه رابط تشعبي
  • تحقق من إعدادات الإنشاء. لاختيار 64 بت إذا كان الملقم 64 بت.
  • في حالتي كان لدي خادم 64 بت ، ولكن اختيار x64 سيفشل! كان هذا هو أول دليل لي
  • تحقق من أن إعدادات الاختبار تدعم البتات الصحيحة.



من المحتمل أيضًا ألا يحب نموذج الكائن عنوان URL الذي تقدمه. إذا لم تقم بتوفير عنوان URL الدقيق الذي قمت بإنشاء مجموعة الموقع أو أن عنوان URL الدقيق المدرج في حسابك قد تم تكوينه في "تعيينات الوصول البديل" ، فسيؤدي ذلك إلى طرح استثناء قد لا يكون بالضرورة منطقيًا. في حالتك ، يمكنك تجربة http://mysite أو http://machinename .




تحقق من web.config الخاص بك ومعرفة ما إذا كان هناك تكوين هناك مع ملف مفقود.

انظر في لك 12 خلية للسجل. إذا كانت إعدادات السجل صحيحة ، فستفقد الملف.

تحرير: تحقق أيضا إذا كان كل ما تبذلونه من DLL في GAC. تحقق مما إذا كان ملف web.config يحتوي على جميع المعلومات: مساحة الاسم ، Classname ، NameSpace ، الإصدار = version_number ، Culture-your_culture ، PublicKeyToken = your_signed_token




لدي نوع مماثل من المشكلة.

في السيناريو الخاص بي ، كنت قادراً على إنشاء مثيل SPSite من تطبيق وحدة التحكم ، ولكن عندما حاول زميل آخر في فريق القيام بذلك ، ألقت التطبيق الاستثناء نفسه كما ذكر أعلاه.

الحل: أضفت زميل الفريق الآخر كمسؤول على مربع خادم Content Db (قد لا يكون ذلك ممكنًا للجميع) ، ويعمل الرمز بشكل جيد ولا يوجد خطأ






Links