PDA

View Full Version : سوال: بروز خطا Inheritance security rules violated while overriding member



aisana
دوشنبه 29 اردیبهشت 1393, 10:57 صبح
سلام ، من نمی دونستم واقعا چه عنوانی برای تاپیکم بزارم از این بابت از مدیران عذر خواهی می کنم.
من یه برنامه ای نوشتم (win application C#‎‎ i)
که کارش وصل شدن به یک ایمیل و خواندن ایمیلها است به این منظور از Aspose.Email.dll توی پروژ ه ام استفاده کردم
برنامه من بدرستی کار می کنه و اجرا می شه مشکل از جایی شروع می شه که از برنامه پکیج می گیرم و می خوام نصبش کنم وسط عملیات نصب
پیغام می ده Strong name signature not valid for this assembly Aspose.Email.dll که بعد از کلی جستجو یکسری عملیات روی dll انجام دادم تا این پیغام رفع بشه حالا برنامه نصب می شه ولی بعد از اون وقتی توی کد برنامه سعی می شه با سرور ارتباط برقرا بشه این پیغام رو میده


Inheritance security rules violated while overriding member: 'Aspose.Email.Imap.ImapException.GetObjectData(Sys tem.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'.
Security accessibility of the overriding method must match the security accessibility of the method being overriden

119209
دوستان اگه منو راهنمایی کنن واقعا ممنون می شم چون یک هفته ای هست دنبال رفع این خطا می گردم

h_assefi
دوشنبه 29 اردیبهشت 1393, 11:17 صبح
سلام دوست عزیز
من خودم به مشکل شما برخورد نکردم اما طبق خطایی که میده به نظر میاد که اون DLL که شما استفاده میکنی از نوع امنیت دیگه ای برخوردار هستش و نوع امنیتی که توی برنامه شما استفاده شده با اون مطابقت نداره. در ابتدا شما باید بدونی که اون DLL از چه Frameworkی استفاده میکنه.
اگه از ورژن های پایین تر از 4 هستش کد زیر را توی Assembly اضافه کن و ببین مشکلت رفع میشه یا نه.
[assembly: SecurityRules(SecurityRuleSet.Level1)]
Level1 ماله امنیت در ورژن های قبل از Framework 4 هستش.
اگه هم از ورژن های بالا تر از 4 استفاده میکنه ورژن Framework شما هم باید بالا تر از یا مساوی همون باشه.
علت اینکه 100% صحبت نمی کنیم فقط بخاطر اینه که خودم تا به حال با این موضوع مواجه نشدم و بطور کامل نیز روی Security تسلط ندارم اما فکر میکنم طبق شواهد مشکل شما با این راه حل رفع بشه.

موفق باشید

aisana
دوشنبه 29 اردیبهشت 1393, 11:47 صبح
بله درست می فرمایید احتمالا مشکل از همون هست ولی من امتحان کردم این کد و توی فایل AssemblyInfo.cs که در مسیر پروژ ه ام و جود داره کپی کردم ولی انگار فایده نداره و همچنان خطا می ده کدهایی که امتحان کردم :
[assembly: SecurityRules(SecurityRuleSet.Level1, SkipVerificationInFullTrust = true)]
یا
[assembly: SecurityRules(SecurityRuleSet.Level1)]
همچنین با Level2 ولی متاسفانه جواب نداد
دوست عزیز از کجا باید متوجه
Framework dll بشم ؟ توی پنجره properteis قسمت Runtime version زده
v4.0.30319 و قسمت version زده 3.6.0.0

h_assefi
دوشنبه 29 اردیبهشت 1393, 12:05 عصر
ورژن Framework یک DLL را میتونی با وارد کردن دستور زیر داخل Command Prompt و با استفاده از ابزار ildasm اطلاعات یک DLL را بدست بیارید
ildasm.exe C:\foo.dll /metadata[=MDHEADER]/text /noil

h_assefi
دوشنبه 29 اردیبهشت 1393, 12:07 عصر
در مورد وارد کردن کد ها درون Assembly بهتره که درون خود پروژه به فایل AssemblyInfo.cs اضافه بشه تا بهترین نتیجه را بده نه داخل فایل متنی موجود کنار پروژه

aisana
دوشنبه 29 اردیبهشت 1393, 12:30 عصر
از این دستور استفاده کردم متدها و کلاسها و یکسری اطلاعات دیگه اورد نتونستم فریم ورکشو پیدا کنم ، من هم او کدها رو به
AssemblyInfo.cs موجود تو پوشه Properties اضافه کردم نه فایل متنی!

h_assefi
دوشنبه 29 اردیبهشت 1393, 12:52 عصر
اگه داخل Command Prompt متنی نوشته شد توی خطوط اول و دوم نوشته شده
در غیر اینصورت اگه توی messagebox نشون داد باید به فرمت زیر باشه که همینطوری که توی عکس زیر مشخصه ورژن Framework این DLL
4 هستش
119221