ארכיון חודשי: בפברואר 2008

משניות הודעה ציבורית: הגדרות האבטחה חיה של Windows ובעלי שטח בפנייה

אני מקבל קומץ של הודעות מאנשים באמצעות אנרגיה "לשלוח מסר" פונקציה של Microsoft מספקת עם רווחים בשידור חי (אשר מארח גם את הבלוג שלי) כל חודש.

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

</קצה>

הסבר פשוט: “הערך אינו נמצא בטווח הצפוי.”

עדכון: פוסטר אנונימי השאיר תגובה נהדרת על שמות פנימי. הקפד לקרוא את זה.

בעת עבודה עם מקבלי אירועים ומסוגים אחרים של קוד המפנה פריטי רשימה של SharePoint באמצעות מודל האובייקטים, אני לעתים קרובות עושים טעויות המפיקים שגיאה זו בזמן ריצה:

שגיאה בטעינת ופועלים אירוע מקלט Conchango.xyzzyEventReceiver xyzzy, גירסה = 1.0.0.0, תרבות = נייטרלי, PublicKeyToken = 0dc50a750396c3ac. פרטים נוספים הוא מתחת. : הערך לא נופל בתוך הטווח הצפוי.

אני חושב שזו שגיאה כללית למדי פוטנציאל הנגרם בהרבה דרכים שונות. עם זאת, הסבר פשוט אחד הוא שגוי שאני המפנה שדה. אם שם השדה 'תאריך יעד', אני חייב להפנות כמו זה במקלט אירוע:

מאפיינים.פריט הרשימה["תאריך יעד"]

כאשר אני לשגות או להשתמש במקרה שגוי בעת הפניה לשדה, SharePoint יוצרת לעיל הזכיר שגיאת זמן ריצה. לדוגמה, זה לא בסדר:

מאפיינים.פריט הרשימה["תאריך יעד"]

</קצה>

מנוי על הבלוג שלי.

תגיות טכנורטי:

עצה מהירה של משתמש הקצה: תצוגות מיון בספריית מסמכים, רשימת, ועוד.

אנחנו יכולים, עליך וליצור תצוגות רבות ברשימות SharePoint (ספריות מסמכים, רשימות מותאמות אישית, ועוד). תמיד רשימות SharePoint התצוגות הזמינות לפי סדר האלפבית. אנחנו לא יכולים לשנות זאת באמצעות החוצה הפונקציונליות של תיבת. אם זה יכול להיעשות באמצעות התאמה אישית (אני לא בטוח שהוא יכול), הוא עד כדי טכני עבור משתמש הקצה האופייני שלך.

אם ברצונך לפקח על הסדר ב- SharePoint רשימות תצוגות זמינות, פשוט לצרף מספר או אות על שם תצוגה, כמו ב-:

1 – לפי סוג החומר
2 – כל המסמכים
3 – תאריך יעד

-או-

A – לפי סוג החומר
B B – כל המסמכים
C – תאריך יעד

יש לי גם יצר תצוגות שמטרתה היא אך ורק להאכיל KPI. אני עוקב מוסכמה זו:

Z_KPI_[תיאור]

הגורמת אזור KPI"" תצוגות תופיע בתחתית הרשימה.

</קצה>

מנוי על הבלוג שלי.

תגיות טכנורטי: ,

יום ראשון מצחיק: “כאשר הייתי ילד קטן”

כהורה, איפשהו לאורך הדרך גיליתי "כשהייתי ילד קטן" טריק.

הבן שלי, כנראה ארבעה או חמישה בזמנו, שיחק כדור פורח ואני אוהב בנים קטנים ביותר לשחק עם בלונים, הוא תלש אותו. הוא היה מאוד מצוברח. העולם בא לקיצו. אמרתי לו, "כשהייתי ילד קטן, היה לי בלון, זה ומכה ובסופו של דבר, יש לי בלון חדש." זה נראה ולעזור לו להתמודד עם הפסד שלו והוביל כיף לדבר על איך זה היה כשהייתי ילד קטן.

זה עבד טוב כפי טכניקה נחמה ואני נהגנו זה מספר פעמים במהלך תקופת הזמן הבא. קיבלת לצרות בעבר כאשר החוואי המפלצת שלו 3 יצור מת. דיברתי על איך הכלב שלי, הנסיך, מת בתאונת רכב. הפעם, תשובתו הייתה, "עכשיו אני מרגישה רע לגבי שני דברים!" אני נרתע מן השימוש של "כשהייתי ילד קטן" הטכניקה של נחמה אחרי זה.

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

זה גם היה די מוצלח לזמן מה, אבל הוא התחיל להתמרד יותר ויותר נגד העריצות של הילדות שלי. אירוע אחד, בפרט, סימנה את סופה. אמרתי לו להביא את פחי האשפה מן המדרכה אל המוסך. הוא טען, ולא הגבתי, "כשהייתי ילד קטן, הייתי צריך לקחת את הזבל בחזרה למוסך." הוא הגיב, "הו כן! טוב כשהיית ילד קטן, . זה היה טיפשי!".

</קצה>

מנוי על הבלוג שלי.

תגיות טכנורטי:

אין אפשרות לאבטח נוף ועמודות על רשימות וספריות מסמכים

עדכון (02/29/08): הפרוייקט החדש הזה codeplex נראה כדי לספק שיטה לאבטחת עמודות בודדות: http://www.codeplex.com/SPListDisplaySetting. אם יש לך ניסיון עבודה עם זה, אנא השאירו תגובה.

פורום פוסטרים לעתים קרובות לשאול שאלה כזאת: "יש לי מנהל תצוגה, ונוף צוות של רשימה. כיצד אוכל לאבטח את תצוגת מנהל הצוות לא יכול להשתמש בו?"

הם גם מרבה לשאול שאלה הקשורה: "אני רוצה לאבטח עמודה מטה-נתונים ספציפיים, כך שרק המנהלים רשאי לערוך עמודה זו, בעוד שאחרים אולי לא יראו את זה."

תשובות אלה חלות על שתי WSS 3.0 אזוב:

  • SharePoint אינה מספקת תמיכה out-של--box לאבטחת צפיות.
  • SharePoint אינה מספקת תמיכה-התקנים עבור עמודות אבטחה.

ישנן מספר טכניקות אחד יכול לעקוב אחר לפגוש סוגים אלה של דרישות אבטחה. . זה מה שעולה בדעתי:

  • להשתמש באבטחה ברמת פריט out-של--box. נוף תמיד לכבד את תצורת אבטחה ברמת הפריט. מקלטי אירוע ו/או זרימת עבודה ניתן להפוך לאוטומטי אבטחה הקצאה.
  • השתמש תצוגות אישיות "חסוי" נוף. . אלו קל מספיק להגדיר. עם זאת, בשל "האישי שלהם" טבע, אלה חייבת להיות מוגדרת עבור כל משתמש. שימוש בהגדרות אבטחה סטנדרטיות כדי למנוע מכל אדם אחר יצירת תצוגה אישית.
  • Web part של תצוגת נתונים ולהשתמש ליישם איזשהו פתרון זמירה אבטחה AJAXy.
  • רול פונקציונליות תצוגת הרשימה שלך ולשלב זמירה אבטחה ברמת עמודה.
  • לשנות את טפסי הזנת נתונים ולהשתמש JavaScript בשילוב עם מודל האבטחה כדי ליישם אבטחה ברמת עמודה זמירה.
  • השתמש בטופס של InfoPath עבור הזנת נתונים. ליישם אבטחה ברמת עמודה זמירה באמצעות שיחות שירות אינטרנט של SharePoint, מותנה הסתר שדות לפי הצורך.
  • רול משלך הפונקציה הזנת נתונים של ASP.NET המיישם את זמירה אבטחה ברמת עמודה.

אף אחת מהאפשרויות האלה הם באמת כל כך טובה, אבל יש לפחות דרך לעקוב אחר אם אתה צריך, גם אם זה קשה.

הערה: אם אתה נופל כל הנתיבים האלה, אל תשכח "פעולות-> פתוח עם סייר Windows". אתה רוצה להיות בטוח. לבדוק עם תכונה זו כדי לוודא שזה לא עובד בתור "דלת אחורית" להביס את ערכת אבטחה.

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

</קצה>

מנוי על הבלוג שלי.

תגיות טכנורטי:

עצה מהירה: מספרי גירסה BDC ADF החברים שלך

אם אתה את היד קידוד ב- ADF קבצים ועושה הרבה מחזורים קוד/ייבוא/בדיקות, השתמש במספר הגירסה כדי להקל את החיים שלך.

אני שונאת להודות בכך, אבל עד השבוע, הייתי תמיד מחיקת ה-ADF ולא ייבוא מחדש של זה. זה לשבור את עמודות הנתונים העסקיים ולגרום לי מברק אותם מחדש. הכל מיותר.

להגיש את זה תחת "זה ברור ברגע שאתה רואה את זה".

דוגמה:

<LobSystem
xmlns:xsi="http://www.w3.org/ 2001/סכימת Xml-מופע" xsi:schemaLocation="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadata.xsd" סוג="WebService" גירסה="1.2.0.0" שם="xyzzyDocumentReview" xmlns="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">

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

</קצה>

מנוי על הבלוג שלי.

תגיות טכנורטי:

פתרון: דוגם BDC מראה עמודה אחת בלבד של תוצאות

ניסיונות מתמשך לספק עמודת בדיקת מידע שימושי יותר באמצעות BDC, נתקלתי בקיר עם דוגם BDC. אם אתה לא רואה את זה, דוגם BDC דומה בורר האנשים פרט לכך הוא עובד עם עמודות מסוג "נתונים עסקיים".

גישה דוגם על-ידי לחיצה על הסמל של ספר פתוח של עמודה של נתונים עסקיים כפי שמוצג:

התמונה

התמונה לעיל מראה עמודה של נתונים עסקיים שנקרא "מאסטר מסמך מזהה". עמודה זו מחובר, דרך BDC, לשירות אינטרנט. ששירות האינטרנט מחזיר שתי עמודות של מידע: מסמך מזהה וכותרת. מטרת העסק היא לספק "מסמך זה מבוסס על" פונקציה. משתמשים בחר מאסטר"" המסמך ולשמור כאשר הם, מקלט אירוע מעתיקה meta שדות נתונים מתבנית הבסיס שאליו בוצעה הפניה.

כברירת מחדל, דוגם BDC של נראה כמו זה בעת חיפוש עבור מסמך שהמזהה שלה = "38":

clip_image002

. זה עוזר, אבל לא מספיק טוב. אנשים לא חושבים במונחים של תעודות זהות, הם חושבים במונחים של כותרים ו/או נתונים אחרים meta. דוגם מאפשרת לך לחפש על עמודות אחרות (המסופקים. כותרת) . אבל לא תוכל להציג את רשימת כותרות שזה נמצא בפועל, רק DocId שלהם הוא כפי שמוצג כאן:

clip_image002[1]

(צילום מסך לא כל כך גדול כי ריה, חיפוש תוצאות חוקי, אבל אתה יכול לראות את זה. אם מצא כמה תוצאות, זה היה רק מופיע של DocId, לא כותרות).

גבוה ונמוך חיפש תשובה לכך ונכשלתי. עמיתי, הנערץ ג'ונתן בראדשו, היה בפני ופתר את הבעיה. כאשר אני הושיט אליו לעזרה, הוא הסביר לי הכיוון הנכון.

להגדיר את בוחר להציג עמודות מרובות באמצעות ShowInPicker"" מאפיין ב- ADF:

<רכוש שם="ShowInPicker" סוג="System.Boolean">נכון</רכוש>

בפירוט רב יותר:

  <!-- כותרת -->
  <TypeDescriptor TypeName="System.String" שם="כותרת" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">כותרת</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <מאפייני>
      <רכוש שם="DisplayByDefault" סוג="System.Boolean">נכון</רכוש>
      <רכוש שם="ShowInPicker" סוג="System.Boolean">נכון</רכוש>
    </מאפייני>
  </TypeDescriptor>

הגדרת מאפיין זה להציג בעיה קלה. ברגע שתציב אותו פעם אחת, כדי להגדיר את זה עבור כל עמודה שאתה רוצה להראות. במקרה שלי, דוגם BDC הראה DocId כברירת מחדל. עם זאת, פעם הוספתי "ShowInPicker" הכותרת, DocId אינו מוצג עוד. . פתרתי את זה במפורש הגדרת המאפיין ShowInPicker מזהה דוק.

הנה התוצאה:

התמונה

(אני אסביר את המוזר "168 – CamlSchema.xsd" בנייה בפוסט בבלוג בעתיד. בקיצור, זוהי מחרוזת משורשרת המאפשר חוויית משתמש משופרת במקצת).

בטח, לאחר שכתב את הפוסט בבלוג הזה, . עשיתי חיפוש אחר "ShowInPicker" ומצאתי להיטים רבים, כולל זה: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. זה מסביר את המשמעות של הנכס הזה יחד עם אחרים BDC חומר טוב.

</קצה>

מנוי על הבלוג שלי!

תגיות טכנורטי:

מהירה & קל: צור תיקייה והקצאה של סוג תוכן (או, יש את מחווני ה-Kpi ולאכול אותם מדי)

על מנת לעקוף בעיה KPI . כתבתי בערך כאן, עשיתי כמה בדיקות וגיליתי העבודה הטמעתי את נגד תיקיות עם מטה נתונים באותו אופן שהם נגד מסמכים או רשימה של פריטים. אני הוכחתי אותו החוצה על-ידי יצירת סוג תוכן חדש בהתבסס על סוג תוכן התיקיה, ואז הוסיף כמה שדות. יצר כמה אינדיקטורים והוכיח לעצמי כי Kpi יפעלו כמצופה. . זה היה חדשות. . זה לא מושלם, כי ההסתעפות שאתה מקבל ה-KPI נגד התיקיות זה לא בדיוק מה שאתה רוצה. זה לא חיסרון מדי במקרה שלי כי 1) משתמשי הקצה לא יודעים יותר, 2) ההסתעפות הולך לתיקייה. הם לחצו את שם התיקיה, הם הפריט. . זה שתי לחיצות במקום אחד, וזה לא סוף העולם.

זה זרמו יפה עם העבודה שאני עושה. . אני יוצר תיקיה עבור כל מסמך בו תועלה. הדבר נעשה באמצעות מקלט אירוע. כתוצאה מכך, . זה חתיכת עוגה כדי לשמור של תיקיית האב מטה נתונים מסונכרנים עם הנתונים מונחה-KPI meta מהקובץ עצמו מאז הצנרת נמצא כבר במקום. This allows me to have my KPI’s and eat them too 🙂

התאמתי את השפופרת אירוע כדי להוסיף את התיקיה ולאחר מכן הגדר את סוג התוכן של תיקיה חדשה זו לסוג התוכן שלי ה-KPI ידידותי מותאם אישית. זה מעט קוד עשה את העבודה:

 SPFolderCollection srcFolders = targetWeb.GetFolder("מסמכים").תיקיות משנה;
  SPFolder addedFolder = srcFolders.Add(מאפיינים.ListItem.ID.ToString());
  SPContentTypeId kpiCT = חדש SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["תוכן מזהה סוג"] = kpiCT;
  addedFolder.Item.Update();

כדי לאתר את מזהה סוג התוכן בפועל, אני לגשת סוג תוכן באמצעות הגדרות האתר, העתקה/הדבקה זה מכתובת ה-URL כמוצג:

התמונה

</קצה>

מנוי על הבלוג שלי!

תגיות טכנורטי: ,

מהיר וקל: לקבל את SPFolder של SPListItem מקלט אירוע

אני שונאת להודות בכך, אבל נאבקתי עם זה כל יום. השפופרת האירוע שלי צריך לעדכן שדה של שלה תיקיית האב. זה קצת מראה איך לעשות את זה:

פרטי void UpdateParentFolder(SPItemEventProperties מאפיינים)
{

SPFolder thisItemFolder = מאפיינים.ListItem.File.ParentFolder;
thisItemFolder.Item["מצב אישור ZZ"] = "חדשות טובות, כולם!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

במקרה זה, אני עובד עם ספריית מסמכים, המאפיינים הם מגיעים לאירוע ItemAdded.

הטריק הוא שאין לך אפשרות לקבל את SPFolder של הפריט ישירות מתוך הפריט עצמו (כלומר. מאפיינים.ListItem.Folder הוא null). במקום זאת, לעבור על קובץ משויך של פריט הרשימה ולקבל בתיקיה הקובץ.

</קצה>

מנוי על הבלוג שלי!

תגיות טכנורטי:

עדיין מקלט אירוע אחר באגים בסיבוב

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

. אני עובד על מקלט האירוע החלו לייצר שגיאה זו 12 כוורת:

שגיאה בטעינת ופועלים אירוע מקלט Conchango.xyzzyEventReceiver xyzzy, גירסה = 1.0.0.0, תרבות = נייטרלי, PublicKeyToken = blahbalhbalh. פרטים נוספים הוא מתחת. : הפניה לאובייקט לא הוגדרה למופע של אובייקט.

. לא ידעתי איפה אני הציג באג זה כי עשיתי דברים רבים מדי באחד שלי מחזורים קוד/לפרוס/בדיקות.

. ניסיתי פתרון זה כדי לקבל pdb שלי שם עם התקוות של SharePoint הזה 12 כוורת יראה את מעקב המחסנית, אבל ללא מזל. אני לא יודע אם זה אפשרי, אם מישהו עושה, אנא הודע לי 🙂

אני יודע שזה אפשרי לכתוב הודעות יומן משלך 12 כוורת. . למען האמת, רציתי משהו קצת פחות מפחיד ומהיר ליישום.

עלה בדעתי ושאני יכול לפחות להוציא מידע בסיסי מעקב על ידי לתפוס ולזרוק מחדש חריגים כלליים כמו זה:

  נסה {
    UpdateEditionDate(מאפיינים);
  }
  לתפוס (יוצא מן הכלל e)
  {
    לזרוק חדש יוצא מן הכלל("משגר, UpdateEditionDate(): יוצא מן הכלל: [" + e.ToString() + "].");
  }

זה הופיע בה 12 כוורת נוהג כך:

שגיאה בטעינת ופועלים אירוע מקלט Conchango.xyzzyEventReceiver xyzzy, גירסה = 1.0.0.0, תרבות = נייטרלי, PublicKeyToken = blahblahblah. פרטים נוספים הוא מתחת. : משגר, UpdateEditionDate(): יוצא מן הכלל: [NullReferenceException.: הפניה לאובייקט לא הוגדרה למופע של אובייקט. ב- Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties נכסים) ב- Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties נכסים, מחרוזת eventDescription)].

זה נתן לי את כל הפרטים. הייתי צריך לאתר את הבעיה הספציפית הזו ואני מצפה להשתמש בו הרבה הולך קדימה.

</קצה>

מנוי על הבלוג שלי!