it-swarm.asia

"استرداد مصنع فئة COM للمكون .... الخطأ: تم رفض الوصول 80070005." (استثناء من HRESULT: 0x80070005 (E_ACCESSDENIED))

لقد قمت للتو بإنشاء تطبيق بسيط واستضافته في IIS6.. في الرمز ، أنا مجرد إنشاء كائنات Excel.

using Excel = Microsoft.Office.Interop.Excel.Application;

namespace TestHosting
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Excel excelObj=new Microsoft.Office.Interop.Excel.Application();
        }
    }
}

لها إعطاء لي بعد الخطأ

 "Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied." (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).

أعدادات النظام:

خادم ويندوز 2008 ، إصدار المؤسسة مع 64 بت. حزمة الخدمة 2

جربت مع العديد من الحلول الممكنة الموجودة على الإنترنت ، ولكن لم يعمل أي منها من أجلي.

بعض الحلول حاولت أدناه

1) إنشاء تطبيق سطح المكتب ضمن المسار "C:\Windows\SysWOW64\config\systemprofile" 2) إعداد إذن/تحكم كامل لـ Microsfot.EXcelApplicaiton في DCOMCNFG 3) قتل جميع مثيلات Excel في إدارة المهام

الرجاء مساعدتي في هذا الصدد ، هذا مجرد تطبيق ، لكن في تطبيقي الأصلي يتعلق في الغالب بقراءة وكتابة البيانات من/إلى Excel.

26
Ram
  1. تأكد من تثبيت وقت تشغيل Office على الخادم.
  2. إذا كنت تستخدم نظام التشغيل Windows Server 2008 ، فإن استخدام interops المكتبية يعد تكوينًا باهظًا وإليكم الخطوات التالية.

الأفضل هو الانتقال إلى Open XML أو يمكنك التهيئة على النحو التالي

  • تثبيت MS Office Pro الأحدث (اعتدت 2010 Pro)
  • إنشاء مستخدم ExcelUser. تعيين WordUser مع مجموعة المسؤول
  • انتقل إلى الكمبيوتر -> إدارة
  • إضافة مستخدم مع الخيارات أدناه
  • خيارات المستخدم كلمة المرور لا تنتهي
  • لا يمكن تغيير كلمة المرور

كوم + التكوين

  • انتقل إلى لوحة التحكم -> المسؤول -> خدمات المكونات -> تكوين DCOM
  • افتح خصائص Microsoft Word 97 - 2003
  • عام -> مستوى المصادقة: لا شيء
  • الأمان -> تخصيص جميع الأذونات 3 للسماح للجميع
  • الهوية -> هذا المستخدم -> استخدم ExcelUser/كلمة المرور
  • قم بتشغيل تطبيق Excel للتأكد من أن كل شيء على ما يرام

3. قم بتغيير إعدادات الأمان لتطبيق Microsoft Excel في تكوين DCOM.

لوحة التحكم -> الأدوات الإدارية -> خدمات المكونات -> أجهزة الكمبيوتر -> myComputer -> تكوين DCOM -> تطبيق Microsoft Excel.

انقر بزر الماوس الأيمن للحصول على مربع حوار الخصائص. انتقل إلى علامة تبويب الأمان وقم بتخصيص الأذونات

راجع المنشورات هنا: خطأ أثناء إنشاء كائن Excel ، معالجة Excel في WCF باستخدام COM

39
bot

في بعض الأحيان ، تقوم بإنشاء تجمع تطبيقات جديد ولا يمكنك حله عبر DCOMCNFG. ثم هناك طريقة أخرى للقيام بها:

تعيين الهوية (اسم النموذج) من تجمع التطبيقات إلى LocalSystem.

لا أعرف السبب الجذري ، لكنه يحل مشكلتي مرة واحدة.

32
Luis Sérgio

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

→ تعيين موقع على تجمع مخصص بدلا من واحد مشترك.

→ تمكين دعم التطبيق 32 بت.

→ قم بتعيين هوية تجمع التطبيقات إلى LocalSystem.

5
Hardik V.
  1. إعطاء إذن القراءة/الكتابة إلى IIS مستخدم أو مجموعة المستخدمين

  2. ابدأ -> تشغيل -> inetmgr

    تمكين مصادقة ASP.NET لموقع الويب الافتراضي الخاص بك

3. من أجل 64 بت (x64) ، قم بإنشاء هذا المجلد: C:\Windows\SysWOW64\config\systemprofile\Desktop

بالنسبة إلى الإصدار 32 بت (x 86) ، قم بإنشاء هذا المجلد: C:\Windows\System32\config\systemprofile\Desktop

تحتاج خدمة windows ، إذا كانت تعمل ضمن ملف تعريف النظام ، إلى مجلد سطح المكتب. تم إنشاء هذا المجلد تلقائيًا على XP والإصدارات الأقدم من Windows Server ، ولكن ليس لإصدارات Windows Vista و Windows 2008 Server.

3
dotnetandsqldevelop

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

حظا سعيدا!

3
Milos

حاول القيام بما يلي:

  1. تأكد من تثبيت التجميعات إمكانية التشغيل المتداخل لـ Office.
  2. تحقق من إصدار التجميعات حول التطوير والإنتاج.
  3. إنشاء مجلد سطح المكتب تحت systemprofile.
  4. قم بتعيين أمان DCOM بشكل صريح لمستخدم الخدمة.

يمكنك العثور على مزيد من التفاصيل هنا

3
user3140982

شخصيا ، قمت بتشغيل هذه الخطوات بالضبط:

* تثبيت مجموعات Interop: يمكنك التثبيت من موقع Microsoft على ويب https://www.Microsoft.com/en-us/download/details.aspx؟id=3508&tduid= (09cd06700e5e2553aa540650ec905f71) (256380) (2459594) (TnL5HPStwNw-yuTjfb1FeDiXvvZxhh.RQ) ()

* تحقق من إصدار التجميعات: تحقق من إصدار التجميعات على آلات التطوير والإنتاج. ستكون التجميعات في GAC ، في الأرامل 7 يكون هذا المجلد٪ windir٪\Assembly.

* إنشاء مجلد سطح المكتب: تستخدم الخدمة مجلد سطح المكتب ضمن ملف تعريف النظام ، لذلك ستحتاج إلى إنشاء هذا المجلد إن لم يكن هناك ، إليك موقع المجلد: بالنسبة للتطبيقات 64 بت: C:\Windows\SysWOW64\config\systemprofile\Desktop لتطبيقات 32 بت: C:\Windows\System32\config\systemprofile\Desktop

* إضافة أذونات مستخدم DCOM:
--- ابدأ تشغيل نافذة واكتب "dcomcnfg".
--- قم بتوسيع خدمات المكونات -> أجهزة الكمبيوتر -> جهاز الكمبيوتر -> تكوين DCOM.
--- ابحث عن تطبيق Microsoft Excel. انقر بزر الماوس الأيمن فوقه واختر الخصائص ، ثم حدد علامة التبويب "أمان".
--- حدد زر الاختيار "تخصيص" ضمن "أذونات التشغيل والتفعيل" و "إذن الوصول" وانقر فوق الزر "تحرير" لكليهما لإضافة مستخدمين على النحو التالي.
--------- انقر فوق الزر "إضافة" والمستخدمين "IIS_IUSRS" و "خدمة الشبكة" ومنحهم الامتيازات الكاملة.
--- انتقل إلى علامة تبويب الهوية وحدد خيار "المستخدم التفاعلي".
--- انقر فوق تطبيق وموافق.

2
IsaacBok

هل لديك Excel مثبت على الخادم؟ تستخدم واجهات التشغيل المتداخل التي تستخدمها لأتمتة Excel الذي يتطلب تثبيت تطبيق Excel هناك. من المحتمل أن تقوم كل دورة طلب صفحة بتشغيل نسخة منفصلة من Excel.exe. أنصح بشدة بعدم القيام بذلك كجزء من تطبيق ويب.

لماذا تريد أن تفعل هذا؟ إذا كنت تريد إنشاء مستندات Excel ، فهناك الكثير طرق أفضل للقيام بذلك ، بما في ذلك OpenXML كما هو مذكور في مكان آخر في هذا الموضوع. يرجى عدم تشغيل Excel على الخادم!

رابط إلى تنزيل OpenXML SDK: http://www.Microsoft.com/en-us/download/details.aspx؟id=5124

2
Richard Cook

أنا فقط إنشاء تطبيق بسيط

ما هو المعالج المستهدف للتطبيق؟ أظن أنه x86 - لذا إما أن تضبطه على x64 أو anycpu.

أعتقد أن المشكلة التي تواجهها هي نتيجة لعملية 64bit تحاول الوصول إلى 32bit dll.

أيضًا ، إذا لم تتمكن من تغيير المعالج الهدف ، فيمكنك محاولة تمكين تطبيقات 32 بت من إعدادات تجمعات التطبيقات في IIS.

1
Fraser

استخدم [~ # ~] npoi [~ # ~] لقراءة وكتابة Excel..it مجاني ومفتوح مصدر

فمثلا

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;

//.....

private void button1_Click(object sender, EventArgs e)
{
    HSSFWorkbook hssfwb;
    using (FileStream file = new FileStream(@"c:\test.xls", FileMode.Open, FileAccess.Read))
    {
        hssfwb= new HSSFWorkbook(file);
    }

    ISheet sheet = hssfwb.GetSheet("Arkusz1");
    for (int row = 0; row <= sheet.LastRowNum; row++)
    {
        if (sheet.GetRow(row) != null) //null is when the row only contains empty cells 
        {
            MessageBox.Show(string.Format("Row {0} = {1}", row, sheet.GetRow(row).GetCell(0).StringCellValue));
        }
    }
}  

نرى هذا سؤال Stackoverflow

1
sangram parmar

http://www.vbforums.com/showthread.php؟657928-failed-due-to-the-following-error-80070005-Access-is-denied .

باستخدام هذا الرابط ، يمكننا حل مشكلة "تم رفض الوصول" في Excel و Word. هذا رابط مفيد حقًا

1
Madhu

هذا يبدو وكأنه مشكلة إذن. أقترح تشغيل processMonitor لتحديد الأذونات المطلوبة.

1
Mike

لقد تخطينا يومين من هذه المشكلة ، أمضينا يومين كاملين ، لذلك وجدت أنني بحاجة إلى منح حق الوصول إلى مجموعة مستخدمي IUSR في DCOMCNFG -> خصائص جهاز الكمبيوتر الخاص بي -> أمان الكمبيوتر -> أذونات التشغيل والتفعيل - > تحرير الإعدادات الافتراضية ومنح جميع الحقوق لـ IUSR.

آمل أن يساعد شخص ما ....

0
harshal H

استخدم هذا

إنشاء مستخدم في مجموعة المسؤول

أضف تفاصيل المستخدم في تهيئة الويب مثل أدناه

<system.web>
   <identity impersonate="true"
    userName="User Name"
    password="Password" />
    `enter code here`</system.web>

أعد تشغيل IIS وتحقق مرة أخرى

-tony-

0
Tony