יום שני, 23 באוגוסט 2010

Cross Domain Policy

הנה עוד בעיה אבל הפעם מכיון של FLEX חברו הצעיר של ה FLASH מבית חברת ADOBE, הבעיה איך אני מגדיר 2 אתרים שונים שנמצאים תחת ה LOCALHOST ב IIS אבל מתקשרים אחד עם השני , לצורך העניין אתר אחד מציג את אפליקצית ה FLEX והשני הוא WEBSERVICE שמשרת את האפליקציית ה FLEX.

CROSS DOMAIN POLICY קיים מתחילת דרכו של ה FLASH לכן הנושא הזה חיי ובועט וניתן למצוא עליו חומר רב, בעקבות ה FLEX שונו חלק מהפרמטרים שהיו ב FLASH ופרמטרים חדשים נוספו.
 דוגמה מבין רבות


CROSS DOMAIN POLICY הוא בעצם קובץ XML שמכיל את ה DOMAIN שאליהם ניגש ה FLEX.

הקובץ במקרה שלנו ממוקם בספריית ה ROOT של ה IIS.

דוגמה:



<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd" >
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all">
<allow-access-from domain="*" secure="false">
< allow-http-request-headers-from domain="*" headers="*" secure="false">
< /cross-domain-policy>

ה * מסמנת שיש הרשאה לכל ה DOMAIN שמעוניינים לגשת מאפליקצית ה FLEX , אם זאת כתובת ספציפית יש להחליף את ה * בכתובת.

כמו שאמרתי ה DEFUALT של הקובץ נמצא ב ROOT , אבל אם ה WEBSERVICE שלנו היה נמצא בשרת אחר ההינו צריכים למקם אותו עם ה WEBSERVICE ,בעצם האפליקציית FLEX מחפשת את ה CROSSDOMAIN.XML ב DOMAIN שאליו היא מתחברת, כלומר הקובץ צריך להכיל את הכתובת של ה DOMAIN שממנו האפליקציית ה FLEX מופעלת על מנת שתהיה מאושרת לקבל נתונים מה WEBSERVICE.

 ניתן לבקש מהאפליקציה לקרוא לקובץ שבכלל נמצא בשרת אחר ע"י הוספת שורת קוד בתוך ה FLEX

Security.loadPolicyFile(http://mysite.com/crossdomain.xml);

בהצלחה...

יום שני, 16 באוגוסט 2010

ODBC 3.51 windows server 2008 64bit

אחרי כל הצרות שעברתי עם ה IIS 7 עכשיו נוצרו בעיות אחרות איך אני מתחבר לאפליקציות ישנות שמשתמשות בחיבור ODBC ישן כמו גרסה 3.51.

על מנת להפעיל את ה ODBC יש להוריד 2 גרסאות מהאתר של MYSQL:


1.את הגרסה ה 32 BIT


2.את הגרסה 64 BIT


יש להתקין את הגרסה 32 BIT ע"י קובץ ההתקנה המצורף.
אך עדיין לא נראה את הגרסה מותקנת Data Sources (ODBC).
את הגרסה 64 BIT יש לפתוח מה ZIP להפעיל CMD ולרשום:
C:\mysql-connetctor>install.bat 0
0 - מסמן התקנה של הגרסת RELEASE.
1 - מסמן התקנה של הגרסה DEBUG.

לאחר סיום ההתקנות יש להפעיל את ה IIS מחדש, ויש לכם ODBC גרסה 3.51.

בהצלחה.

יום חמישי, 12 באוגוסט 2010

Framework 1.1 and IIS 7 and Windows 7

מיקרוסופט מנסים להרוג את ה FRAMEWORK 1.1 וגם פוזלים לכיוון של 2 , החיים נהיו יותר קשים בלהגדיר על שרתים חדשים WINDOWS SERVER 2008 אפליקציות "ישנות" שמבוססות על FRAMEWORK ישנים.

המגבלות של FRAMEWORK 1.1 שהוא תומך רק במערכות 32 BIT , ולכן יש לבצע שינויים רבים על מנת להפעיל אותו על השרת.

שלב א:

דבר ראשון יש לדאוג להתקין CGI על השרת:

Server Manager -->Roles-->Add Role Service

לבחור ב FEATURE - CGI


יש להוסיף גם את ה METABASE שאיתו עובד FRAMEWORK 1.1
יש לסמן בנוסף את
 IIS6 Managment tools -->IIS 6 managment compatbility --> IIS 6 Metabase Comptability

שלב ב:
התקנת ה Framework
יש להוריד את ה Framework ועדכוני אבטחה:

נתינת הרשאות גבוהות עבור האפליקציה היא שלב קריטי ביותר

עדכון FULL TRUST של האפליקציה:

Administrative tool - .Net Framework 1.1 configuration



לחיצה על Adjust Zone Security מקפיצה Wizard בו 2 אפשריות עדכון עבור המחשב הזה או עבור משתמש,
לאחר סימון אחת מהאפשרויות התאפשר לנו לשנות כיצד התוכנה תגיב ע"י שימוש של משתמש,רשת פנימית וחיצונית - אינטרנט.



ניתן להשתמש במקום ב Microsoft.net framework 1.1 wizard שנמצא ב Administrative tool

יש להריץ את הפקודות הבאות ב CMD

הפעלה של ה Framework
C:\Microsoft.NET\Framework\v1.1.4322\>aspnet_regiis -enable

התקנת סקריפטים
C:\Microsoft.NET\Framework\v1.1.4322\>aspnet_regiis -c

צריכים לערוך גם את קובץ ה CONFIG של ה FRAMEWORK
ניתן למצוא את הקובץ בספריה:

C:\Microsoft.NET\Framework\v1.1.4322\Config\Machine.config

יש לערוך אותו ולהוסיף את השורה למטה בסוף התגית - configSections


<section name="system.webServer" type="System.Configuration.IgnoreSectionHandler,
    System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>

מערכות 64 BIT לא מזהות את ה Framework בגלל שהוא תוכנן ל 32 BIT לכן נעשה פה טריק קטן:
ניצור ספריה חדשה ב

C:\Microsoft.NET\Framework64\v1.1.4322\Config\

נעתיק את כל מה שנמצא בספריה המקבילה של ה 32 BIT.

שלב ג:
הוספת ה Framework ל IIS

נפתח את ה IIS נסמן את ה NODE של ה LOCALHOST
נלחץ על FEATURE VIEW ונסמן את ISAPI and CGI Restrictions , נלחץ על ADD



נבחר את הקובץ

C:\Windows\Microsoft.Net\Framework\v1.1.4322\aspnet_isapi.dll
ו Restriction נסמן כ Allowed.

יש לבנות Appliction Pool שמבוסס על Asp.net v.1.1 וללחוץ על Advanced Settings
צריך לשנות את הפרמטר Enable 32-bit applications = true

משנשאר זה להוסיף את האתר ל Application Pool

בהצלחה.

יום שני, 9 באוגוסט 2010

Required permissions cannot be acquired. / Failed to grant minimum permission requests

התקלה הזאת מתרחשת כאשר רצים קבצים באתר (DLL וכו') שאינם נחשבים כ FULL TRUST , במערכת ב .net , שמשתמשת ה ASP.

לאחר שהגדרתי את האתר ב IIS 7 ניסיתי להריץ אותו ב LOCALHOST אבל קיבלתי הודעה כזאת:.


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.Security.Policy.PolicyException: Required permissions cannot be acquired.


Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:


[PolicyException: Required permissions cannot be acquired.]


System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission) +2770052


System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission) +57
[FileLoadException: Could not load file or assembly 'Infragistics2.WebUI.UltraWebListbar.v6.3, Version=6.3.20063.53, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]


System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +0


System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +54


System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +211


System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +141


System.Reflection.Assembly.Load(String assemblyString) +25


System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +32
[ConfigurationErrorsException: Could not load file or assembly 'Infragistics2.WebUI.UltraWebListbar.v6.3, Version=6.3.20063.53, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]


System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +596


System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +211


System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +46


System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +177


System.Web.Compilation.BuildProvidersCompiler..ctor(VirtualPath configPath, Boolean supportLocalization, String outputAssemblyName) +185


System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories, Boolean isDirectoryAllowed) +350


System.Web.Compilation.BuildManager.CompileCodeDirectory(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories) +125


System.Web.Compilation.BuildManager.CompileCodeDirectories() +525


System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +448
[HttpException (0x80004005): Could not load file or assembly 'Infragistics2.WebUI.UltraWebListbar.v6.3, Version=6.3.20063.53, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]


System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() +57


System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +612


System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) +644
[HttpException (0x80004005): Could not load file or assembly 'Infragistics2.WebUI.UltraWebListbar.v6.3, Version=6.3.20063.53, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]


System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +3465427


System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +69


System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +279



מסתבר של .NET יש הרשאות משלו במיוחד שמדובר על FRAMEWORK 2 , הוא לא מתייחס בכלל להרשאות שמוגדרות ב IIS 7.

אז איך מתקנים את זה:
ב WINDOWS 7 נראה כאילו שלא קיים FRAMEWORK 2 וה DEFAULT הוא 3.5, אם במקרה אתם רוצים להתקין אתר שבנוי ב FRAMEWORK 2 תצטרכו להוריד את ה .net framework 2.0 configuraton שנמצא בחבילת ה SDK
של framework 2.0
לאתר מיקרוספט

הכלי נמצא
 CONTROL PANEL -->ADMINISTRATOR TOOLS -->.NET FRAMEWOR 2.0 CONFIGURATION


תחילה נבחר ב RUNTIME SECURITY POLICY ונבחר ב ADJUST ZONE SECURITY


ניתן להגדיר הגדרות אבטחה עבור משתמש או עבור כל המכונה.


ונסמן את האפשרות של FULL TRUST

ולאחר מכן לסיים את ה WIZERD ולנסות להפעיל את האפליקציה שוב.