سؤال

لدي كود تشغيل في ascx داخل PageLayout في SharePoint 2007 بالوصول إلى الملفات الموجودة على ملقم بعيد أيالملف.إنشاء("\servername\sharename\folder\file.txt").يتم تشغيل التعليمات البرمجية داخل SharePoint تطبيق ويب الذي يحتوي CAS وضع الثقة الكاملة في شبكة الإنترنت.config.الملف.إنشاء يلقي الاستثناء التالي:-

النظام.UnauthorizedAccessException

الوصول إلى المسار '\\servername\sharename\folder\file.txt' رفض.

حصة مشتركة للجميع مع كامل التحكم أذونات NTFS يتم تعيين الجميع مع السيطرة الكاملة.تطبيق ويب تجمع التطبيق قيد التشغيل ضمن حساب مجال أيضا مع أذونات صريحة للوصول إلى الموارد (غير أن هذا ينبغي أن تكون هناك حاجة).

ركضت عملية مراقبة على الجهاز البعيد و لا يضرب يجري تسجيلها على الملقم.هذا يقودني إلى الاعتقاد بأن ذلك هو مشكلة مع SharePoint رمز الوصول إلى إعدادات الأمان.كما قلت أعلاه ، والثقة في شبكة الإنترنت.التكوين هو مجموعة كاملة.

هل من الممكن أن CAS لا يزال حجب الوصول البعيد?أي شخص يمكن أن نفكر من أي منطقة أخرى إلى مراجعة ؟


التحديث

أكثر قليلا من المعلومات...

لقد حاولت جعل التطبيق بركة acct مجال الادارة و المشكلة لا تزال موجودة.عند استخدام نفس الأسلوب للوصول إلى محرك الأقراص على الجهاز المحلي أنه يعمل بشكل جيد.تشغيل نفس القانون في SnippetCompiler خارج sharepoint باستخدام التطبيق بركة الحساب يعمل بشكل جيد.

ويساعد هذا الأمل, اسمحوا لي أن أعرف إذا كنت تستطيع التفكير في أي المزيد من سبل التحقيق أو الاختبارات يمكنني المحاولة.


التحديث

ايم ليس متأكدا مما إذا كان هذا من شأنه أن يؤثر على القضية ولكن المحلية خادم يقوم بتشغيل Windows Server 2003 ملقم بعيد يعمل بنظام التشغيل Windows 2000.


التحديث

لقد حاولت تشغيل التعليمات البرمجية من خلال جزء ويب وأنه يعمل بشكل جيد.بنية الملف في المشروع الذي فشل هو على النحو التالي:-

wss
 - VirtualDirectories
   - SharePointWebApp
     - ...sp web app files
     - .
     - .
   - PageLayoutControls
     - control.ascx
     - .
     - .

ثم في IIS يجب البنية التالية:-

IIS
 - Websites
   - SharePointWebApp (pointing to \wss\VirtualDirectories\SharePointWebApp)
     - PageLayoutControls (virtual directory pointing to \wss\VirtualDirectories\PageLayoutControls)

ثم في PageLayouts انا إشارة التحكم باستخدام ما يلي:-

<%@ Register TagPrefix="TEST" TagName="MyControl" Src="~/PageLayoutControls/control.ascx" %>
<asp:Content ContentPlaceholderID="PlaceHolderMain" runat="server">
  <TEST:MyControl id="myControl" runat="server"/>
</asp:Content>Let me know if you need more info.

التحديث

تعمق الغموض...

عندما كنت الوصول إلى موقع sharepoint من برنامج Internet Explorer (6 أو 7) على واجهة أمامية ويب SharePoint server أنا لا أحصل على الاستثناء.

عندما كنت الوصول إلى موقع sharepoint من موزيلا فايرفوكس من SP ويب ملقم للجهة الأمامية أنا لا تحصل على الاستثناء.

عندما كنت الوصول إلى موقع sharepoint عن بعد من أي متصفح أحصل على الاستثناء.

كما لا فرق ما المستخدم استخدام تسجيل الدخول إلى الموقع ، طالما لديهم أذونات الوصول إلى موقع sharepoint.

أي أفكار ؟


التحديث

همم, لقد وجدت الآن أنه إذا كنت الوصول إلى موقع sharepoint عن بعد موقع sharepoint يحاول القيام الملف.إنشاء() محليا (أيالملف.إنشاء("C: emp\abc.txt")) ثم يعمل.إذا كنت الوصول إلى موقع sharepoint من sharepoint مربع والقيام الملف.إنشاء() عن بعد (أيالملف.إنشاء("\ServerName\ShareName\FolderName\file.txt")) ثم يعمل.

إلا أنها فشلت عندما كنت الوصول إلى موقع sharepoint عن بعد ولها موقع sharepoint محاولة للقيام الملف.إنشاء() عن بعد أيضا.نوع من قفزة مزدوجة المشكلة.هذا يجعلني أعتقد أنه قد يكون NTLM / Kerberos المسألة.

حاليا, نحن تشغيل باستخدام مصادقة NTLM.

وقد أي شخص آخر من ذوي الخبرة في هذا النوع من المسألة ؟


التحديث

نعم, أنا متأكد من أن هذا هو NTLM مسألة عدم السماح قفزة مزدوجة.أنا فقط غيرت المصادقة على موقع sharepoint لاستخدام المصادقة الأساسية و عملت.تغيرت مرة أخرى إلى المصادقة المتكاملة و فشلت.

الآن أن يقرر ما إذا كان نقل المزارع إلى استخدام Kerberos أو إيجاد طريقة أخرى حول هذه المسألة.:-/


التحديث

مجرد إعطاء SPSecurity.RunWithElevatedPrivileges النار الآن.على الرغم من شيء واحد ، هو RunWithElevatedPrivileges من المفترض أن يتم استخدامها في هذا السياق ؟ سابقا كنت استخدمه فقط للوصول إلى القوائم والمكتبات داخل SharePoint بدلا من الوصول إلى الملف من الوصول إلى الشبكة.

أي أفكار ؟


التحديث

نعم SPSecurity.RunWithElevatedPrivileges يعمل على حل المشكلة.:-)

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

المحلول

أنا أتساءل إذا كان هذا هو قفزة مزدوجة المسألة أن الكود الخاص بك هو محاولة الوصول إلى المورد المستخدم الممثل, ولكن فشل ذلك لأن NTLM لن انتحال إلى ملقم آخر (Kerberos قد).

هل حاولت SPSecurity.RunWithElevatedPrivileges?التي من شأنها إزالة الانتحال (RevertToSelf) ثم ربما تجمع التطبيقات يمكن لصاحب بمثابة نفسه (نفسها؟) في حين أنه ربما لم يكن من قبل.

مجرد فكرة و ينبغي أن يكون من السهل جدا لمحاولة الخروج.

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