PDA

View Full Version : Access is denied



rockpigeon
شنبه 24 دی 1384, 09:20 صبح
سلام.
من در ASP.NET و با C# کدی برای دسترسی به Adobe Acrobat نوشتم.
که بتوانم یک فایل pdf را Open کنم.
در اصل هدف من جستجو در یک فایل pdf است.ولی در هنگام اجرا در IE به این پیام برخورد میکنم.
[UnauthorizedAccessException: Access is denied.]
System.RuntimeType.CreateInstanceImpl(Boolean publicOnly) +0
System.Activator.CreateInstance(Type type, Boolean nonPublic) +66
System.Activator.CreateInstance(Type type)

کد برنامه ای که برای باز کردن یک فایل pdfنوشتم.


string pdfpath,pdfname;
Type AcrobatType;
AcrobatType = Type.GetTypeFromCLSID(new System.Guid
("{72498821-3203-101B-B02E-04021C009402}"));

pdfname = "application_part1_ref";
pdfpath = Server.MapPath(pdfname);
Acrobat.CAcroAVDoc avdoc;
avdoc = (Acrobat.CAcroAVDoc) Activator.CreateInstance
(AcrobatType);
avdoc.Open(pdfpath,pdfname);

در ضمن من Acrobat.TLB را به پروژه Refrence دادم.

با تشکر.

Behrouz_Rad
یک شنبه 25 دی 1384, 20:41 عصر
دوست خوبم!
به دستور زیر توجه کنید:


pdfname = "application_part1_ref";
pdfpath = Server.MapPath(pdfname);

متغیر pdfpath، مسیر قرار گیری پروژه را به انتهای متغیر pdfname می چسباند.
مسیری که توسط دستور Server.MapPath برگشت داده می شود، مسیر جاری پروژه ی شما بر روی سرور است.
این مسیر، در انتهای خود شامل کاراکتر بک اسلش نمی شود!
در این حالت، موتور پردازشگر ASP.NET تصور می کند که شما قصد دستیابی به مسیر غیر مجازی را دارید. در این حالت، خطایی که اشاره کردید رخ خواهد داد.
پس متغیر pdfpath را به شکل زیر، مقداردهی کنید:


pdfpath = Server.MapPath(".") & "\pdfname);

البته بنده در کد شما، نام فایل PDF ای رو مشاهده نمی کنم! (شاید فایل شما بدون پسوند است!)
نام فایل PDF به همراه یک کاراکتر بک اسلش در ابتدای آن، باید در ادامه ی متغیر pdfname قرار گیرد.
موفق باشید.

rockpigeon
پنج شنبه 29 دی 1384, 23:13 عصر
سلام.

مشکل با راه حلی که ارائه دادید حل نشد.پیام خطایی که من دریافت میکنم به این صورت است.
Access is denied.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Access is denied.

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate="true"/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET write access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Stack Trace:


[UnauthorizedAccessException: Access is denied.]
System.RuntimeType.CreateInstanceImpl(Boolean publicOnly) +0
System.Activator.CreateInstance(Type type, Boolean nonPublic) +66
System.Activator.CreateInstance(Type type) +7
Project.testpdf.findbtn_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\project\testpdf.aspx.cs:67
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277




من فکر میکنم که باید به user ,aspnet دریک جایی حق دسترسی داد.
مثلا در component services که من اینکار رو هم کردم.ولی باز هم مشکل حل نشد.
شاید هم مشکل در web config باشد.

در آخر از کسانی که در حل مشکل به من کمک کنند نهایت تشکر را خواهم داشت.

Behrouz_Rad
پنج شنبه 29 دی 1384, 23:41 عصر
دقیقا می تونم حدس بزنم که مشکل شما در کجاست!
مطمئن باشید که با مسیر دهی به فایل مشکل دارید.
اگر مسیردهی رو آنچنان که گفتم انجام بدی، قائدتا نباید به مشکلی برخورد کنی.
اول فکر می کردم که شاید تنظیمات امنیتی مرورگر کلاینت مانع از اجرای فایل PDF میشه اما بر روی یکی از وب سایت هام تست کردم، مشکلی نبود!

rockpigeon
جمعه 30 دی 1384, 20:08 عصر
با سلام.

من کد برنامه تغییر دادم به طوری که اصلا قصد باز کردن یک فایل Acrobat را نداشتم.
یعنی فقط این کد.

AcrobatType = Type.GetTypeFromProgID("AcroExch.AVDOC");

Acrobat.CAcroAVDoc avdoc = (Acrobat.CAcroAVDoc)Activator.CreateInstance(Acrob atType);

این کد فقط یک instance ایجاد میکند.یعنی حالا دیگه نه اسم pdf و نه مسیر pdf برای من مهم است.ولی باز هم همان پیام access is denied را دریافت میکنم.در واقع مشکا اصلی سر همون
Acrobat.CAcroAVDoc avdoc = (Acrobat.CAcroAVDoc)Activator.CreateInstance(Acrob atType); است.و نه جای دیگه.

با تشکر از شما.


جالب تر اینجاست که شما میتونید بدون هیچ مشکلی کد را اجرا کنید!!!!

rockpigeon
دوشنبه 07 فروردین 1385, 12:54 عصر
این مشکل حل شد.یکسری تنظیمات در control panel و adminstrative tools و .. میخواد که اگه کسی بخواد براش توضیح میدم.