ג’יבריש בשם קובץ בהורדה מ – azure באתר MVC

יום שלישי, יולי 22, 2014

  היה לי את הקוד הבא, אשר מוריד קובץ PDF בפרוייקט MVC Code Snippet public ActionResult Pdf(int id, DateTime date){    var res = shuttlesWebService.Pdf(id, date);    string fileName = res.Name;    Response.AppendHeader("Content-Disposition",        string.Format("attachment; filename={0} {1}.pdf", fileName, res.Date.ToString("dd/MM/yyyy")));    return File(res.File, "application/pdf"); ;}   זה עבד נהדר, עד שעלה לענן – ברגע שעלה ל – windows azure, שם הקובץ ירד בג’יבריש. הפיתרון היה פשוט מאוד. (שלושת השורות המודגשות) Code Snippet public ActionResult Pdf(int id, DateTime date){    var res = shuttlesWebService.Pdf(id, date);    string fileName = res.Name;    Response.HeaderEncoding = Encoding.GetEncoding("windows-1255");    string filename = res.Name;    filename = HttpUtility.UrlPathEncode(filename);    Response.AppendHeader("Content-Disposition",        string.Format("attachment; filename={0} {1}.pdf",...
תגיות: , ,
תגובה אחת

הרצת כמה WorkerRole בפרוייקט azure אחד

יום רביעי, דצמבר 28, 2011

  בהמשך לפוסט שהסביר כיצד להריץ כמה Web Roles במחשב אחד, נראה כעת כיצד להריץ כמה Worker Roles במחשב אחד.   בשונה מ - Web Roles שכדי להריץ אותם ממחשב אחד צריך רק לעשות שינויים בקובץ הקונפיג, ב - Worker Role זה כבר דורש שינוי קוד.   אני משתמש בפיתרון שנכתב כאן (כדאי לקרוא את ההסברים שם) - את דוגמת הקוד וה - framework שלהם אפשר להוריד כאן       כדי להשתמש בקוד שלהם צריך לייצר WorkerRole שיורש ממחלקה בשם ThreadedRoleEntryPoint (מחלקה שהם כתבו) כל WorkerRole צריך לרשת מ - WorkerEntryPoint. ולא מ - RoleEntryPoint     וכעת ניתן לכתוב את הקוד הבא ב - WorkerRole (שאמור להכיל את שאר ה - Roles)   public class...
תגיות: ,
אין תגובות

הרצת כמה WebRole בפרוייקט azure אחד

יום ראשון, דצמבר 25, 2011

  הרבה פעמים יש לנו כמה פרוייקטים שאמורים להתארח על IIS, בסביבה רגילה נארח את כולם על אותו IIS בשרת אחד, ב - azure העניינים קצת יותר מסובכים, היות שכברירת מחדל כל web role אמור לרוץ על מחשב משלו - מה שכמובן הרבה פעמים מיותר ועולה כסף.   יש כמה פתרונות לזה - אני אדגים כאן פיתרון בעזרת הגדרה של Virtual Application.   Virtual Application הוא בעצם Application רגיל שאנחנו מכירים ב - IIS - מה שמיוחד זה כיצד להגדיר אותו שירוץ כמו שצריך ב - azure.     ראשית נכנס לקובץ ServiceDefinition.csdef, נמחק את הגדרות ה - WebRoles שאנחנו לא מעוניינים שיעלו כמחשב נפרד.   לאחר מכן תחת Site (לפני...
תגיות: , , ,
אין תגובות

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

יום שני, דצמבר 19, 2011

  כשאנחנו מפתחים אפליקציות web אנחנו משתמשים בקובץ הקונפיג כדי להגדיר את ה - Connection String והגדרות שונות ב - App Settings, במעבר ל - azure הדברים מסתבכים קצת יותר, ניתן עדיין להגדיר את כל ההגדרות בקובץ ה - web.config, אבל זה אומר שבכל שינוי נצטרך לעשות Upload מחדש למערכת - מה שכמובן לא מומלץ.   האופציה האחרת היא להשתמש בקבצי הקונפיג של azure.   ניתן כמובן להשתמש עם חלון המאפיינים של הפרוייקט (תחת תיקיית ה - Roles, לחיצה כפולה על ה - Role המתאים) - אבל כדי להבין מה עושים תמיד עדיף בהתחלה לכתוב לבד.   בפרוייקט ה - azure שלכם ניתן לפתוח את הקובץ...
תגיות: , ,
תגובה אחת

log4net and azure

יום ראשון, דצמבר 11, 2011

  בדרך כלל אני משתמש בתשתית log4net כדי לשמור לוגים, אני אוהב לשמור אותם אותם לקבצים ואני משתמש ב - RollingFileAppender.   כמובן שכשעובדים עם windows azure אי אפשר לעבוד בצורה כזו, מכיוון שכדי לקרוא את הלוגים נצטרך להכנס למכונה ב - remote וגרוע מכך בדרך כלל יש יותר ממכונה אחת - מה שאומר שהלוגים נשמרים על מכונות שונות, וכמובן אחר restart שלהם לא יהיה זכר ללוגים.     לכאורה הפיתרון הפשוט הוא לשמור אותם לבסיס נתונים או ל - storage, הבעייה עם בסיס נתונים שהתימחור שלו הוא לפי גודל - ולוגים יכולים לתפוס הרבה מקום, מצד שני עבור storage משלמים לפי מספר טרנזקציות - ואם כותבים הרבה...
אין תגובות

דוגמא בסיסית לכתיבה ל – azure blob

יום שלישי, נובמבר 22, 2011

  חבר ביקש שאכתוב לו דוגמה בסיסית לכתיבה וקריאה ל - azure.     ראשית כמובן יהיה לנו פרוייקט azure כלשהו (Web Role, Worker Role)    לאחר מכן נוכל לכתוב את הקוד הבא:     var storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("DataConnectionString"));   CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer blobContainer = blobClient.GetContainerReference("CONTAINER_NAME"); blobContainer.CreateIfNotExist();     CloudBlob blob = blobContainer.GetBlobReference("URI or FILE_NAME");     השורה הראשונה נותנת לנו גישה לחשבון המתאים.   (חשוב כמובן להגדיר במאפיינים של פרוייקט ה - azure ולהוסיף את ה - DataConnectionString, (זה נמצא תחת תיקיית Roles במאפיינים של הפרוייקט המתאים בטאב Settings) עבור מצב Loacl יכול להיות מוגדר עם UseDevelopmentStorage=true עבור cload צריך לכתוב את הנתיב המלא, יראה משהו כמו:   DefaultEndpointsProtocol=http;AccountName=ACCOUNT_NAME;AccountKey=ACCOUNT_KEY   את הערך עבור AccountKey ניתן למצוא באתר הניהול של azure )     לאחר מכן נקבל הפנייה ל -...
תגיות: ,
אין תגובות