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

HTTP 406 שגיאה בעת שימוש $http.get זוויתי נגד נקודות הקצה של SharePoint מנוחה

עדכון: מארק AD ndersson הצביע נפלאה שכזו פרטי: http://blogs.office.com/2014/08/13/json-light-support-rest-sharepoint-api-released/. זה מסביר הרבה :).

אולי זו הכותרת הגרוע ביותר של הבלוג אי פעם! בכל אופו.

אני בדרך כלל עושה את כל שלי שטנץ נגד מופע O365. יש לי מופע אישי שלי כך לא צריך להיות מודאג להשפיע על מישהו אחר. במאמר מוסגר – זוכר מתי נתקשר נשאו סביב מכונות וירטואליות על המחשבים הניידים שלנו עם מוס – SQL Server, IIS, מחליטים vs Hyper-V. VMWare? בכל מקרה...

שפיתחתי אפליקציה באמצעות זוויתי בסביבה זו שעושה, בין היתר, זה:

$http.get(serverUrl)
.הצלחה(פונקציה(נתונים, מצב, כותרות, config) {

var getLinksResponse = נתונים;

getLinksResponse.value.forEach(פונקציה(תוצאה) {

// הלאה וקצף אז

זה היה עובד בסדר גמור בסביבות שני שונות SharePoint online. עם זאת, כאשר עמיתי מועבר זה מופע Cloudshare, הוא התחיל HTTP 406 שגיאה (מי היה הפעם הראשונה שקיבלתי אי פעם את זה, אז... איזה כיף, אני מניח). עשיתי קצת מחקר ואנו הכותרת "מקבל" היה את. SharePoint online היה מרוצה.:

קבל: יישום/json

אבל המופע cloudshare (מהי SP-פרם, מתארח בשרת וירטואלי) רציתי הקלאסי "odata = מילולי" הוסיף גם כן:

קבל: יישום/json;odata = מפורט

כדי לתקן את זה, הוספנו את הכותרת ככזה:

var config = {כותרות: {
'קבל': ' יישום/json;odata = מפורט '
}
};

$http.get(serverUrl,config)
.הצלחה(פונקציה(נתונים, מצב, כותרות, config) {

var getLinksResponse = נתונים;

getLinksResponse.value.forEach(פונקציה(תוצאה) {

// הלאה וקצף אז

כי יש להיפטר 406, אבל זה גם שינה את הפורמט של התגובה. זה היה יותר. מפורט. (haha!) עוד שינויים נדרשו והנה התוצאה הסופית:

var config = {כותרות: {
'קבל': ' יישום/json;odata = מפורט '
}
};

$http.get(serverUrl,config)
.הצלחה(פונקציה(נתונים, מצב, כותרות, config) {

var getLinksResponse = נתונים;

getLinksResponse.d.results.forEach(פונקציה(תוצאה) {

// הלאה וקצף אז

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

</קצה>

מודעות גוברת / אימוץ של JavaScript במסגרות

עמיתי, ג'אווד אנצארי (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), כתב בלוג סיכום קצר על מסגרות הוא אוהב, או לפחות משתמש עם SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

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

מה אנשים משתמשים? הם מתמקדים יותר אבזור של מיקרוסופט (CSOM / JSOM) או העברה של יותר לכיוון זוויתי, נוקאאוט, גחלת, ועוד?

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

לכתוב תגובה כאן או אצל SharePoint התפוח הגדול אם אתה רוצה לדון (התפוח הגדול יהיו סבירות יותר של החלטות טובות).

</קצה>

ספינינג של SharePoint Timer עבודות מ תצורת אוסף האתר

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

1. ניתוח מסומנת קבצים ושליחת תזכורות לאנשים אם למספר ימים (מאז שהקובץ הוצא) לחרוג ממגבלות סף מסוים

2. הסרת קישורים מכל תוכן אחר כאשר תוכן מסוים הוסרה או בארכיון מן המערכת

3. משתמש רוצה לראות כל ההתראות הוא נרשם בכל האתרים באוסף האתרים

4. שליחת תזכורות של מחברים כדי לסקור את התוכן כאשר זמן סקירה שצוין בתוכן וזה התאריך מתקרב

. טוב, והרשימה עוד ארוכה...

– לראות יותר-: http://www.bigapplesharepoint.com/ דפים/תצוגה--Insight.aspx?BlogID=40#sthash.7cKuiwly.dpuf

יש פעמים בעבר שלי מתי שיש דבר כזה היה יכול להיות מאוד מועיל.

</קצה>

איך: קביעת תצורה של יחידת מבחן, מבחן כיסוי עם QUnit.js ו- Blanket.js עבור משרד 365 יישום SharePoint

מבוא

אני בודק אפשרות בדיקות יחידה ולבדוק כיסוי של JavaScript כמוך יישום SharePoint חדש עבור SharePoint online במשרד 365 סוויטה.  בין שבילי מחקר ברור רוקני Qunit.js מיד אחרי זה, כדי Blanket.js.

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

Blanket.js משתלב עם Qunit, זה יראה לי את השורות בפועל של JavaScript היו –, ויותר מכך-לא באמת בוצעו במהלך מריצים את. הבדיקה.  זהו "כיסוי"-קווי לבצע מכוסים על ידי הבדיקה בעוד שאחרות אינן.

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

Qunit

בהנחה שיש לך את Visual Studio פרוייקט הגדרת, התחל על-ידי הורדת את חבילת JavaScript של http://qunitjs.com.  הוסף את JavaScript ו- CSS המתאים הפתרון שלך.  . שלי נראה ככה:

image

איור 1

כפי שניתן לראות, אני משתמש 1.13.0 בזמנו כתבתי בבלוג זה. לא לשכוח להוריד ולהוסיף לקובץ ה-CSS.

את זה מהדרך, השלב הבא הוא ליצור סוג של מבחן לרתום להפנות את הקטעים Qunit.  אני בודק כל מיני פונקציות בקובץ script ששמו "QuizUtil.js" אז יצרתי דף HTML הנקראת "QuizUtil_test.html" כפי שמוצג:

image איור 2

. הנה הקוד:

<!DOCTYPE html>
<html xmlns= 'http://www.w3.org/ 1999/xhtml">
<הראש>
    <כותרת>מבחן QuizUtil עם Qunit</כותרת>
    <קישור rel= "גליון סגנונות" href="../CSS/qunit-1.13.0.css" />
    <קובץ script סוג= טקסט/javascript"" src="QuizUtil.js" נתונים-cover></קובץ script>
    <סקריפט סוג ="טקסט/javascript" src ="qunit-1.13.0.js"></קובץ script>
    <סקריפט סוג ="טקסט/javascript" src ="blanket.min.js"></קובץ script>

    <קובץ script>
        מודול("getIDFromLookup");
        מבחן("QuizUtil getIDFromLookupField", פונקציה () {
            var goodValue = "1;#פול Galvin";

            שווה(getIDFromLookupField(goodValue) + 1, 2), "מזהה של [" + goodValue + "] + 1 צריכים להיות 2";
            שווה(getIDFromLookupField(לא מוגדרת), לא מוגדרת, "לא מוגדר ארגומנט הקלט אמורה להחזיר תוצאה לא מוגדר.");
            שווה(getIDFromLookupField(""), לא מוגדרת, "ריק ארגומנט הקלט אמורה להחזיר ערך לא מוגדר.");
            שווה(getIDFromLookupField("gobbledigood3-thq;עדה dkvn;skfja sdjfbvubvqrubqer0873407t534piutheqw;vn"), לא מוגדרת,"צריך תמיד להחזיר מכונית התוצאה למספר שלם");
            שווה(getIDFromLookupField("2;#אדם אחר"), "2", "בדיקת [2;#אדם אחר].");
            שווה(getIDFromLookupField("9834524;#ערך ארוך"), "9834524", "המבחן ערך גדול.");
            notEqual(getIDFromLookupField("5;#מישהו", 6), 6, "בדיקה של notEqual (5 לא שווה ל- 6 עבור דוגמה זו: [5;#מישהו]");

        });

        מודול("htmlEscape");
        מבחן("QuizUtil htmlEscape()", פונקציה () {
            שווה(htmlEscape("<"), "&lt;", "בריחה במרחק פחות ממרכזיה ('<')");
            שווה(htmlEscape("<מחלקה div =  "someclass">חלק מהטקסט</div>"), "&lt;מחלקה div =&quot;someclass&quot;&gt;חלק מהטקסט&lt;/div&gt;", "מחרוזת הבדיקה מורכבת יותר.");
        });

        מודול("getDateAsCaml");
        מבחן("QuizUtil getDateAsCaml()", פונקציה () {
            שווה(getDateAsCaml(חדש תאריך("12/31/2013")), "2013-12-31T:00:00:00", "בדיקת תאריך קשה מקודדת: [12/31/2013]");
            שווה(getDateAsCaml(חדש תאריך("01/05/2014")), "2014-01-05T:00:00:00", "בדיקת תאריך קשה מקודדת: [01/05/2014]");
            שווה(getDateAsCaml(חדש תאריך("01/31/2014")), "2014-01-31T:00:00:00", "בדיקת תאריך קשה מקודדת: [01/31/2014]");
            שווה(getTodayAsCaml(), getDateAsCaml(חדש תאריך()), "getTodayAsCaml() צריך להיות שווה getDateAsCaml(תאריך חדש())");
            שווה(getDateAsCaml("שטויות ערך"), לא מוגדרת, "מה אתה עושה. לנסות לקבל את התאריך של ערך שטויות.");
            שווה(getDateAsCaml(לא מוגדרת), לא מוגדרת, "לנסות להשיג התאריך [לא מוגדרת] תאריך.");
        });

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

        });

        מודול("עוגיות");
        מבחן("QuizUtil קוקי פונקציות שונות.", פונקציה () {
            שווה(setCookie("מבחן", "1", -1), getCookieValue("מבחן"), "לקבל עוגייה. אני צריך לעבוד.");
            שווה(setCookie("anycookie", "1", -1), נכון, "הגדרת חוקי הבישול צריכה להחזיר 'true'.");
            שווה(setCookie("עוגיות מטורף שם !@#$%"%\^&*(()?/><.,", "1", -1), נכון, "קביעת שם רע קוקי להחזיר 'false'.");
            שווה(setCookie(לא מוגדרת, "1", -1), לא מוגדרת, "עובר לא מוגדר כשם קובץ cookie.");
            שווה(getCookieValue("לא קיים"), "", "קוקי לא קיים מבחן.");
        });

    </קובץ script>
</הראש>
<הגוף>
    <div מזהה= "qunit"></div>
    <div מזהה= "qunit-אביזר"></div>

</הגוף>
</html>

ישנם מספר דברים קורים כאן:

  1. המפנה את הקוד שלי (QuizUtil.js)
  2. הפניה Qunity.js
  3. הגדרת מספר מודולים (getIDFromLookup, עוגיות, ואחרים)
  4. הצבת <div> שהמזהה שלה הוא "qunit".

לאחר מכן, אני פשוט תמשוך למעלה בדף זה ותקבל משהו כזה:

image

איור 3

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

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

לגבי המבחנים עצמם – כמה הערות:

  • למותר לציין כי אתה צריך לכתוב את הקוד שלך כזה כי זה ברת מלכתחילה.  באמצעות הכלי יכול לעזור לאכוף משמעת הזה. למשל, היה לי פונקציה שנקראת "getTodayAsCaml()”.  זה לא מאוד ברת מאז לוקח אין ארגומנט הקלט כדי לבחון אותה לשוויון, היינו צריכים כל הזמן לעדכן את הקוד המבחן כך שישקף את התאריך הנוכחי.  אני refactored את זה על ידי הוספת פרמטר קלט נתונים ואז עובר את התאריך הנוכחי כשיבוא הנוכחי היום בתבנית CAML.
  • המסגרת Qunit מסמכי בדיקות משלה ונראה די חזקים.  הוא יכול לעשות דברים פשוטים כמו בדיקות לשוויון, יש גם תמיכה עבור שיחות בסגנון ajax (שניהם "אמיתי" או mocked באמצעות להתחשבנות האהוב שלך).
  • גם עובר התהליך מכריח אותך לחשוב דרך מקרים קצה – מה קורה עם "undefined" או null מועבר בתוך פונקציה.  זה מקל מאוד לבדוק תרחישים אלה..  . חומר טוב.

כיסוי עם Blanket.js

Blanket.js משלים Qunit על-ידי מעקב אחר הקווים בפועל של קוד לבצע במהלך בדיקות שלך.  זה משתלב נכון Qunit אז למרות שזה יישום נפרדת לגמרי, זה משחק יפה – נראה ממש כאילו זה app חלקה אחת.

. זה blanket.js בפעולה:

image איור 4

image

איור 5

(למעשה יש ללחוץ על תיבת הסימון "אפשר כיסוי" בחלק העליון [ראה איור 3] כדי לאפשר את זה.)

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

להשיג blanket.js עבודה על-ידי ביצוע השלבים הבאים:

  1. להוריד אותו מ http://blanketjs.org/.
  2. להוסיף את הפרוייקט שלך
  3. עדכון דף הרתמה שלך במבחן (QuizUtil_test.html במקרה שלי) כדלקמן:
    1. להפנות את הקוד
    2. לקשט שלך <קובץ script> הפניה כזו:
    <קובץ script סוג= טקסט/javascript"" src="QuizUtil.js" נתונים-cover></קובץ script>

Blanket.js מרים את התכונה "נתונים-cover" ועושה את הקסם שלו.  זה הוקס לתוך Qunit, מעדכן את ממשק המשתמש כדי להוסיף את האפשרות "אפשר כיסוי" וזהו!

סיכום (TL; ד ר)

השתמש Qunit כדי לכתוב מקרי מבחן שלך.

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

השתמש blanket.js כדי להבטיח כיסוי

  • ודא ש-qunit פועל
  • הורדה blanket.js ולהוסיף אותו לפרוייקט שלך
  • להוסיף אותו לדף הרתמה שלך במבחן:
    • להוסיף הפניה blanket.js
    • להוסיף תכונה "מכסה נתונים" כדי שלך <קובץ script> תג
  • את הבדיקות Qunit.

אף פעם לא עשה את כל זה בעבר והיו כמה דברים בסיסיים בעבודה קומץ של שעות. 

בדיקה מאושר!

</קצה>

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

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

Lists.asmx, GetList, "ערך אינו יכול להיות null”

גיליתי היום בהם GetList() שיטת ב lists.asmx שירות האינטרנט צריך להיקרא היטב או זה נוטה לזרוק מסתורי "ערך אינו יכול להיות null" יוצא מן הכלל (ואת כל זאת בהנחה שבאפשרותך לקבל אחרי הודעת שגיאה כללית גרוע, "חריגה מסוג ' Microsoft.SharePoint.SoapServer.SoapServerException’ המערכת התריעה.")  באופן ספציפי, מצאתי לא יכול לספק כל סוג של קידומת על שיטת GetList.  הגזיר jQuery שלהלן ממחיש את הנקודה:

image

אם תעשי זאת, שירות האינטרנט מגיב עם "ערך אינו יכול להיות null" לפי זה כנר-בתנאי פרוטוקול HTTP:

<?גירסת xml = "1.0" קידוד = "utf-8"?>
  <סבון:מעטפה
     xmlns:סבון ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi = "
http://www.w3.org/ 2001/סכימת Xml-מופע
     xmlns:xsd ="
http://www.w3.org/ 2001/סכימת Xml">

  <סבון:הגוף>
    <סבון:אשמתו>
      <faultcode>סבון:שרת</faultcode>
      <faultstring>
        חריגה מסוג ' Microsoft.SharePoint.SoapServer.SoapServerException’ נזרק.
      </faultstring>
      <פירוט>
        <errorstring xmlns ="
http://schemas.microsoft.com/sharepoint/soap/">
ערך אינו יכול להיות null.
        </errorstring>
      </פירוט>
    </סבון:אשמתו>
  </סבון:הגוף>
</סבון:מעטפה>

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

זה עוד יותר מבלבל / מתסכל כי שיטות אחרות לסבול קידומות.  למשל, את GetListCollection שיטה לא אכפת אם הוא היה קידומת, אפילו עם קידומות שטויות כמו "xyzzy":

image

זה "ערך אינו יכול להיות null" נראה שכיחה למדי עם lists.asmx כך אני מקווה שזה יעזור למישהו החוצה בעתיד.

</קצה>

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

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

קינון אינסופית <div> תגיות ו- Mootools

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

אני עובד על פרוייקט בו אני אני שליפת נתונים מסוימות לאחר חיפוש, אריזה זה לתוך הודעת ה-XML ולאחר מכן ב- XML הוא בסופו של דבר הופך HTML באמצעות ה-XSLT.  יש הרבה jQuery מעורב, סיבית אחת אשר מיישמת חלק מהפונקציונליות הטאבים.  בעת לחיצה על לשונית (באמת, של <div>), jQuery מפעיל להחביא() הראי() ב- divs שונים (עומס הדף ההתחלתי מוריד את התוכן כך ישנן פעולות postback אין במקרה זה).

חבורה של לפני שעות, הכרטיסיה מיתוג לוגיקה התחיל לשיבושים, זה מופיע באחת הכרטיסיות שלי.  אני בסופו של דבר הצליחו לקשר זאת העובדה שבה internet explorer (לפחות) חשב <div> תגים מקוננים רחוק, עמוק הרבה יותר המיועד.הכלים מפתח יראה:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— סוף סוף להראות את זה נסגר כל הדרך לכאן!

כל כך, אם כן $("#Tab1Content").הסתר(), אני גם הייתי מסתיר Tab2 ואני לעולם לא אראה Tab2 אם אני גם לא להראות Tab1.  העתקתי והדבקתי את הקוד לתוך visual studio וזה הראה כל בתור של div יפה, בדיוק כמו שהם היו אמורים לעשות, כשאני נראה ככה:

-<div id = "Tab1Content">
  +<div>
  +<div>
-<div id = "Tab2Content">
  +<div>
  +<div>

לנצח את הראש שלי בקיר לזמן והבחנתי כי בקוד ה-HTML בפועל קוד היה יצירת הרבה ריק <div> תגים, כמו:

<הגוף>

  <div id = "Tab1Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

  <div id = "Tab2Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

</הגוף>

(האמור לעיל הוא waaaaaaaaaaaay פשטני.  תגי div ריק תקפים לחלוטין. חלק שלי <div> תגיות היו מלאות תוכן, אבל לא היו הרבה יותר.  אני נשבע לך. זה שלי <xsl:עבור-כל> הוראות פלטו הקצר-הטופס div תגיות כאשר ה-xsl:לא עבור יח ' למצוא את כל הנתונים.  אני הכרחתי את הערת HTML של הפלט, כפי שמוצג:

image

 

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

כמו תמיד, אני מקווה שזה עוזר למישהו בצרה.

</קצה>

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

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

סיבה אחת עבור "היוצר של תקלה זו לא ציין סיבה.”

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

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

myKeywordQuery.SelectProperties.Add("xyzzy");

תודה רבה, תיאור של הכובע כדי קורי רוט ו בבלוג זה שימושי מאוד (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

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

"היוצר של תקלה זו לא ציין סיבה."

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

</קצה>

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

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

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

מתי להפעיל את ביצוע() שיטה ב- KeywordQuery, באפשרותך ליצור ResultTable מבוסס על ResultType.RelevantResults.  מקטע קוד זה ממחיש למה אני מתכוון:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

הטבלה שתיווצר תהיה את העמודות הבאות של מידע: 

מזהה
דרגה
כותרת
מחבר
גודל
נתיב
תיאור
כתיבה
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

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

</קצה>

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

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

אחת הסיבות: "נכשלה לחלץ את קובץ ה-cab בפתרון”

בעת עבודה ב- web part של visual studio פרוייקט היום, עשיתי של ארגוני-re משניות של קבצים מסוימים כדי לשים אותו בתוך התיקיה _ layouts כחלק מתהליך הפריסה. באופן ספציפי, שיניתי את שם קובץ .js מ- "TypeAhead.js" "TypeAhead(הישן).js"  אני מתכנן להסיר אותו ברגע הפעילות העוקבת שלה "TypeAhead.js" מוכיח הנכון.  הוא נראה כמו זה:

image

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

אירעה שגיאה בשלב פריסה "פתרון להוסיף": נכשל לחלץ את קובץ ה-cab בפתרון.

מתברר כי לא מומלץ להכניס תו סוגריים בשמות קבצים.  הסרתי parens, אשר פתר את הבעיה.

</קצה>

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

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