ארכיון קטגוריה: פיתוח SharePoint

במבוק לוח שנה אינטראקציה עם SharePoint גורמת "אירעה שגיאה בלתי צפויה"

היום, עבדתי בסביבה המשתמשת במבוק לוח שנה web part לשם שיתוף פעולה משופר. זה משק קטן/בינוני רגיל עם שני WFEs מאוזנים מבחינת עומס, "שרת יישום" לצורך יצירת אינדקס של InfoPath ו- SQL באשכולות של תגמולים.

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

הם ביקשו ממני להסתכל על זה. אני בקלות לשכפל את הבעיה ולאחר מכן נוסף ?תוכן = 1 לסוף כתובת ה-URL. . זה איך למדתי שהם היו באמצעות ה-web part של במבוק. חזרתי אל הדף., לפתע, הוא הראה לי הודעה שגיאה מסודרת:

image

אני לא יודע מה קורה או מה עשיתי כדי לקבל את הודעת השגיאה מבוקרת כדי להציג אחר מאשר מוסיף ?תוכן = 1 סיביות של מחרוזת השאילתה.

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

</קצה>

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

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

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

באמצעות רפלקטור על Microsoft.SharePoint.dll

Redgate .NET Reflector מיכאל בלומנטל יש לשים מאמר אודות התראות צפיות ("אילו תצוגות ניתן להשתמש בעת יצירת התראה ?"), זה מעניין. תבחן לגופה. עם זאת, הייתי מעוניין עוד יותר לראות איך הוא הולך באופן שיטתי באמצעות תהליך השימוש .NET רפלקטור של Redgate. צעד אחר צעד, הוא מראה כיצד להשתמש להתחקות אחר את הכלי איך SharePoint קובע אם תצוגה על רשימה צריך להיות "subscribable" מחוסר מילה טובה יותר (he explains this much better than I do 🙂 ).

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

</קצה>

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

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

מיון פריטי לוח שנה בתצוגה ' לוח תאריכים '

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

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

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

    מאז לא עבד, אני מקווה שם היא שאילתת CAML איפשהו שם אשר יאפשרו לעקוף את המיון. CQWP מאפשרת לי לחולל את השינוי., אולי השנה יהיה גם כן?

  2. עריכת ה-web part, לחפש "ייצוא" פונקציה ו … BZZZT! אני לא יכול ייצוא XML שלו. אין אפשרות ייצוא.

    אני עדיין מחזיק תקווה כי ניתן למצוא, לשנות את השאילתה CAML קצת. מאז אין אפשרות לייצא את ה-web part, זה משאיר את SharePoint Designer.

  3. אני הוספת ה-web part של לוח שנה לאתר ארגז חול, פתח את האתר באמצעות SharePoint Designer. אני מסתכל הסימון עבור ה-web part, מצאתי מה שחיפשתי. זה קודד טירוף, אבל זה שם: "<ListViewXml …. >טירוף מקודד</ListViewXml>". באופן ספציפי, יש פנינה זו:

<שאילתה>
<היכן>
<DateRangesOverlap>
<השם FieldRef "EventDate" = />
<שם FieldRef = "EndDate" />
<השם FieldRef "RecurrenceID" = />
<ערך סוג = "תאריך ושעה">
<חודש />
</ערך>
</DateRangesOverlap>
</היכן>
<מיין לפי><שם FieldRef = "Session_x0020_ID" /></מיין לפי>
</שאילתה>

(אני יודע לפענח &lt;של ו &של gt לפצל אותם לשורות מרובות למען של בהירות).

להוסיף <מיין לפי> קצת וממיין עכשיו זה לפי מזהה ההפעלה, לא את מזהה פריט הרשימה פנימי.

O טיפ ענק’ הכובע Isserman בקי לתגובה שלה פוסט בבלוג של אשה שגיא: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. . שם <מיין לפי> במקום הנכון ללא תגובה שלה.

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

</קצה>

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

תכונות של SharePoint & פתרונות ניהול — . אל תשכח את U ב- CRUD (או D לצורך העניין)

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

פתרון נתון עלולים ליצור חפצים כמו אלה:

  • סוג תוכן
  • הגדרת הרשימה
  • הגדרת אתר
  • נתונים ברשימה
  • אפילו מקלטים
  • טפסים של InfoPath

והרשימה עוד ארוכה.

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

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

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

</קצה>

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

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

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

תיקון מהיר: כי אינטראקציה עם SharePoint של שירותי אינטרנט, InvalidOperationException

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

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

System.InvalidOperationException: ניתן לבצע פעולה זו רק במחשב שבו משתמשים בעלי הרשאות ב- SQL Server כדי לקרוא ממסד הנתונים של התצורה מצטרף לחוות שרתים. כדי להתחבר לשרת זה בחוות השרתים, להשתמש את אשף קביעת התצורה של טכנולוגיות ומוצרים SharePoint, ממוקם בתפריט התחלה בכלי ניהול.
ב- Microsoft.SharePoint.Administration.SPWebApplication.Lookup(אורי requestUri)

מסתבר כי שכחתי להוסיף את השירות מאגר היישומים SharePoint ב- IIS. פעם עשיתי את זה, זה עבד מצוין.

פרסום פורום MSDN זה נתן לי את הרמז שהייתי צריך: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</קצה>

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

עקוב אחרי לצפצף: http://twitter.com/pagalvin

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

מהיר וקל: להשיג SPFolder של SPItemList

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

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

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

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

השיעור מפתח כאן בשבילי הוא SPItem לא לקבל גישה לתיקיה. אתה צריך להשתמש SPListItem.File.

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

<קוד>
שימוש מערכת;
שימוש System.Collections.Generic;
שימוש System.Text;
שימוש Microsoft.SharePoint;
שימוש System.Collections;

מרחב שמות Conchango
{
    /// <סיכום>
 /// </סיכום>
 מחלקה ManualFolderUpdate
    {
        סטטי void ראשי(מחרוזת[] ארגומנטים לזמינים)
        {
            מחרוזת msh = "ManualFolderUpdate (v 1.0): "; // msh = "הודעה עליונה"

 המסוף.WriteLine(msh + ". מתחילים.  . אני שונה לאחרונה ב- 08/04/08.");

            מחרוזת כתובת url = http://localhost/xyzzy;

            שימוש (SPSite oSPSite = חדש SPSite(כתובת url))
            {

                שימוש (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    Splist.update() ספריית מסמכים = oSPWeb.Lists["מסמכים"];

                    המסוף.WriteLine(msh + "מה אתה עושה. יש ספריית המסמכים.");

                    המסוף.WriteLine(msh + "הרוזן פריט lib של דוק: [" + docLib.ItemCount + "].");

                    int המיפוי של מזהי התיקיות = 0;
                    מחרוזת NewStatus = "xyzzy";

                    המיפוי של מזהי התיקיות = מערכת.המר.ToInt32(ארגומנטים לזמינים[0].ToString());
                    המסוף.WriteLine("מחפשים תיקיה עבור פריט: [" + המיפוי של מזהי התיקיות + "].");

                    SPListItem li = docLib.GetItemById(המיפוי של מזהי התיקיות);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    המסוף.WriteLine(msh + "מה אתה עושה. יש תיקיית האב.");

                    NewStatus = ארגומנטים[1].ToString();
                    המסוף.WriteLine("הגדרת מצב [" + NewStatus + "].");

                    המסוף.WriteLine("לחץ חזור לבצע את העדכון או CTRL-C כדי לבטל.");

                    המסוף.ReadLine();

                    thisItemFolder.Item["מצב אישור"] = NewStatus;
                    thisItemFolder.Item.Update();

                    המסוף.WriteLine(msh + "מסיים לעדכן את התיקיה.  יציאה.");

                } // שימוש SPWeb

            } // שימוש SPSite

 המסוף.WriteLine(msh + "סיים.");

        } // ראשי

    } // מחלקה foldersync
} // מרחב שמות
</קוד>

</קצה>

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

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

הסתרת פעולות מותאמות אישית ב- SharePoint

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

הרבה על המבוכה שלי, החפץ לאיתור באגים עשתה את דרכה של dev UAT, ייצור לפני שמישהו יצא לי לשאול, "מהו הקישור xyzzy ב הזה?"

עד עכשיו, . אנחנו בהפקה ואני ממש לא רוצה להסיר את התכונה, לתקן את elements.xml ולאחר מכן התקן מחדש.

טוד Bleaker הצביע על דרך קלה להתמודד עם זה. במילים שלו:

"CustomActions אינם מועתקים למסד הנתונים, הם קוראים ישירות הקובץ Elements.xml, יועתקו למצב היישום בזמן ריצה. כל כך, אתה לא צריך לבטל, הסרת התקנה, התקן מחדש, מחדש את התכונה כדי להסיר את CustomAction. פשוט להסיר אותו מקובץ ה-Elements.xml, המיחזור מאגר היישומים(s) התבצע. בפעם הבאה התכונה הוא בהיקפו, לא תראה את CustomAction יותר."

עקבתי אחרי ההוראות שלו,, בטח, הם עובדים.

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

</קצה>

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

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

תיקון מהיר: גישה לאתר SharePoint זורקת [HttpException (0x 80004005): לבקשה הסתיים.]

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

[HttpException (0x 80004005): לבקשה הסתיים.]

אני מחובר וראיתי כי מספר אתרים אחרים היו ממש בסדר. . חשדתי שהיו מוסתרים web parts מסוימים בדף משתמש trusty ?תוכן = 1 בטכניקה של איתור באגים, למעשה מצאתי 11 ה-web parts בדף, רק שניים מהם היו גלויים. . אפילו טוב יותר (מנקודת מבט let's-hope-I-find-something-ugly-here-that-I-can-fix), שלושה סגור web parts אלה היה שם של "שגיאה".

מחקתי web parts אלה (שהוא עצמו לקח זמן רב באופן מפתיע) זה פתר את הבעיה. For today 🙂

</קצה>

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

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

הפנייה לשירותי אינטרנט ברית המועצות של WSS / מוס בסביבת FBA

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

  • 401: לא מאושר
  • האובייקט זז

האובייקט"עבר" המסר היה המעניין ביותר כי זה היה אומר את זה האובייקט"" (השירות שלנו ברית המועצות) עברה"" ל login.aspx. זה בבירור אומר שעלינו אימות בבעיה כלשהי.

בסופו של דבר הבנתי שיש לי סימניה כתב בבלוג מאת רוברט גרט. לתאר כיצד להפעיל את שירות אינטרנט WSS/מוס למטרה כללית חי בתוך סביבה FBA. שימו לב: אין באפשרותי לקשר ישירות למאמר (כמו של 06/09/08) כי היא רוצה לאמת. הקישור שאני לספק מביא אותך "כל ההודעות" תצוגת יכול לאתר את המאמר ספציפיים על-ידי חיפוש "Accessing מוס לשירותי אינטרנט של באמצעות באימות מבוסס טפסים".

. הנה הקוד אשר עבדה בשבילנו:

ר' ReportingService2006 = null; 
// אימות אימות אימות = חדש אימות(); 
אימותכתובת Url = "http://URL/_vti_bin/Authentication.asmx";
אימותCookieContainer =
חדש CookieContainer();
LoginResult התוצאה = אימותכניסה("מזהה משתמש", "סיסמה");
אם (תוצאה.קוד שגיאה = = LoginErrorCode.NoError) 
{
// אין שגיאה, אז לקבל את העוגיות.
עוגיות CookieCollection = אימותCookieContainer.GetCookies(חדש אורי(אימותכתובת Url));
עוגיות authCookie = עוגיות[תוצאה.CookieName];
ר' =
חדש ReportingService2006();
ר'.כתובת Url =
"http://server/_vti_bin/ReportServer/ReportService2006.asmx";
ר'.CookieContainer =
חדש CookieContainer();
ר'.CookieContainer.Add(authCookie);
}
נסה
{
  ר'.CreateSubscription(דו ח, extSettings, desc, eventType, matchData, parameters1);
}
לתפוס (חריגה ex)
{
  Console.WriteLine(. לשעבר.Message.ToString());
}

לפרש דברים כדי לעבוד ככה:

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

</קצה>

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

מהיר ופשוט: להקצות משאבים אתר באמצעות מודל האובייקט של SharePoint ב- C #

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

קוד זה יוצר אתר Wiki חדש:

 SPSite siteCollection;

    siteCollection = חדש SPSite(ב- "http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "כותרת xyzzy",
        "תיאור xyzzy", 1033, SPWebTemplate.WebTemplateWIKI, שווא, שווא);

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

אם אתה חיפוש על "Webs.Add()", תמצאו מספר בבלוג מאוד שימושי, מאמרים MSDN ותיעוד SDK אשר נכנס לעומק בנושא זה. אני בהחלט ממליץ אתר זה.

</קצה>

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

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