בעיה בפיתוח n-tier - ASP+DLL

בעיה בפיתוח n-tier - ASP+DLL

יש לי פרויקט שמפותח בצורת n-tier - כלומר DLLים מתעסקים בגישה ל DB וBusiness logic, והממשק הוא ASP. יש לי תופעה מעצבנת - אם אני רוצה לקמפל מחדש DLL אני לא יכול - אפילו אם אני עושה STOP ל IIS. הדרך היחידה שאני מצליח זה לעצור את ה PROCESS של DLLHOST ב TASK MANAGER. אני עובד עם XP PRO. למה זה קורה? אני מפספס פה משהו?
 

oferbar

New member
יש הסבר

הי אלון ההסבר הוא שה DLL שלך טעון לתוך תהליך DLLHOST ולא INETINFO לכן רק הפסקת תהליך זה תגרום לשחרור ה- DLL ותאפשר ללינקר לכתוב DLL חדש על הקובץ הקיים (XP נועל אותו). הסיבה מדוע ה- DLL שלך רץ מחוץ ל INETINFO היא בגלל שברירת המחדל לאפליקצית ASP ב- XP (וגם ב- Windows 2000) היא: Medium - pooled אם תפתח את ה- MMC של IIS ותביט Virtual Directory Property dialog של אפליקציית ה- ASP שלך, תראה שה- Application Protection מסומן כ- Medium כדי לעצור את תהליך DLLHOST יש שתי דרכים נוספות: 1. באותו dialog לחץ על כפתור Unload 2. מתוך Administrative Tools, Component Services מצא את ה COM+ Application שנקרא: IIS Out-Of-Process Pooled Application לחץ mouse right-click ובחר ב- Shutdown דרך נוספת להמנע מכך היא על ידי העתקת קובץ ה- DLL למקום אחר ורישומו שם, ולא את העותק איתו אתה עובד כרגע. רק כאשר כאשר תסיים את הקומפילציה, יהיה עליך לעצור את DLLHOST (כמפורט לעיל) ולהעתיק שוב את הקובץ. מקווה שזה עזר. עופר
 
הארת את עיני. ../images/Emo13.gif שאלה קטנה:

בשביל שה DLL לא ירוץ דרך DLLHOST אלא דרך INETINFO (מה שלפי הבנתי יגרום לזה שאם אני עושה STOP ל IIS, לא תהיה לי את הבעיה הזאת), אני צריך ש Application Protection יהיה High או Low? תודה רבה!
 

oferbar

New member
Low

סימון high עדיין יריץ את האפליקציה תחת DLLHOST אבל בתהליך נפרד (לכל אפליקציה) לכן עליך לסמן כ- LOW עופר
 
למעלה