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

סיבה אחת לשדה"אחד או יותר סוגי אינו מותקן כראוי”

שאני עושה לצבוט קטן אתמול ל- web part אינה שאילתה CAML מול רשימה.  עשיתי את השינוי, לפרוס אותו, חטפתי מכה עם שגיאה:

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

אני עומד בפני עוד נושא כלי יוצא דופן מוקדם יותר כך לא מיד חיבור בשאילתה שלי CAML עם השגיאה SharePoint היה דיווח לי.  עשיתי חיפוש מהיר bing ו ו נמצאו בבלוג זה שימושי על-ידי קלמן Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

השאילתה רע:

שאילתה.שאילתה ="<היכן><ו><Neq><שם FieldRef = 'Abbr' /><סוג ערך = 'טקסט'>SFNY</ערך><שם FieldRef = 'Abbr' /><סוג ערך = 'טקסט'>SFIS</ערך></Neq></ו></היכן>";

כאן הוא קבוע:

שאילתה.שאילתה ="<היכן><ו><Neq><שם FieldRef = 'Abbr' /><סוג ערך = 'טקסט'>SFNY</ערך></Neq><Neq><שם FieldRef = 'Abbr' /><סוג ערך = 'טקסט'>SFIS</ערך></Neq></ו></היכן>";

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

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

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

</קצה>

SharePoint 2010 תקוע "פריסת פתרון” מצב

השתמשתי PowerShell כדי לפרוס פתרון חוות SharePoint (h/t:  קורי רוט ו שלו הצבת בלוג). 

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

ראיתי את זה בעיה למצוא פעמים רבות בפורומים MSDN, כך הייתי עצבני למדי על זה.  חיפשתי מסביב קצת ו למצוא מאמר זה שימושי (על-ידי אדם לכאורה unattributed מ http://www.resolutionsnet.co.uk/).  ההזמנה בוטלה משימת פריסת, כאשר לחצתי לתוך הפתרון, היא סיפרה לי כי היה בהצלחה לפרוס אותה הפתרון עד שלוש ארבע השרתים בחווה.

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

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

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

</קצה>

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

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

שגיאה של היום: "אין אפשרות להוסיף את ההרכבה שצויינה GAC”

אני כבר היה נלחם קצת עם visual studio 2010 ב פתרון sp2010, היה מקבל את הודעת השגיאה:

אירעה שגיאה בשלב פריסה "פתרון להוסיף": שגיאה: אין אפשרות להוסיף את ההרכבה שצויינה במטמון ההרכבה הכללי: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

הלכתי GAC עצמו (c:\windowsassembly) כדי לנסות ולהסיר והגענו שגיאת "קובץ בשימוש".

עשיתי iisreset, הורדתי כמעט sysinternals, עצרתי את שירות שעון העצר של services… סוף סוף, אני פשוט שסגרת ופתחת visual studio עצמו והצלחתי סוף סוף לסגור אותו.

</קצה>

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

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

מהיר וקל: איתור באגים VS 2010 פריסת פתרון

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

שקול זה מעט קוד:

image

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

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

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

image

זוהי טכניקה גסה, אך די קלה ומהירה.

</קצה>

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

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

FeatureActivated משימת שעון העצר והיקף תכונה

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

אני משתמש Visual Studio 2010 פריסה המשיך נכשל עם שגיאה "שגיאה אירעה בשלב פריסה 'הוסף פתרון': הפניה לאובייקט לא הוגדרה למופע של אובייקט."

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

image

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

עקיפה ציבורית void FeatureActivated(מאפייני SPFeatureReceiverProperties)
{

    // אין לבצע את הפעולות הבאות עם תכונות יישום מסופחים אינטרנט, הוא מוביל לייאוש חיוך
    // אתר SPSite = מאפיינים.Feature.Parent כ SPSite;

    ווה SPWebApplication = מאפיינים.Feature.Parent כ SPWebApplication;

    אם (ווה = = null) לזרוק חריגה חדש("webapp2 הוא null".);

    foreach (עבודת SPJobDefinition ווה.JobDefinitions)
    {

        נסה
        {
            אם (המשימה.שם = = List_JOB_NAME)

                המשימה.מחק();
        }
        לתפוס (E חריג)
        {
            לזרוק חריגה חדש("סמן-2");
        } // לתפוס חריגה e
    }

    // להתקין את המשימה

    WeatherForecastTimerJob weatherForecastTimerJob =
        חדש WeatherForecastTimerJob(List_JOB_NAME, ווה);

    לוח זמנים של SPMinuteSchedule = SPMinuteSchedule חדש();
    לוח זמנים.BeginSecond = 0;
    לוח זמנים.EndSecond = 59;
    לוח זמנים.מרווח זמן = 5;
    weatherForecastTimerJob.Schedule = לוח זמנים;
    weatherForecastTimerJob.Update();

}

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

</קצה>

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

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

כאשר הוא Microsoft.SharePoint.ApplicationPages.Administration.dll?

היה מסרתי פרוייקט visual studio המפנה Microsoft.SharePoint.ApplicationPages.Administration.dll.  לקח לי קצת תוך כדי למצוא מחשבה זה, ניתן לשתף.  בסביבה שלי, הוא ממוקם ב:

c:\תוכנית filescommon filesmicrosoft sharedweb שרת extensions14configadminbin

</קצה>

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

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

פרוייקט CodePlex – סייר SP2010

במסגרת מאמץ מתמשך כדי ללמוד את הפרטים הטכניים ברמה נמוכה של SharePoint 2010, יצרתי "SharePoint Explorer"סוג של הכלי.  הרעיון אינו חדש.  נעשה שימוש בפרוייקט זה יותר מפעם אחת: http://sharepointexplorer.codeplex.com/.  הרעיון שלי הוא ליצור גירסה SharePoint כי משתמש מחובר רכיבי web part כדי להציג כל הפרטים ברמה נמוכה מודל האובייקט יכול לספק. 

בבלוג זה משמש הן הכרזה של הפרוייקט, כמו גם קריאה עבור מתנדבים.  אם אתה מעוניין לעבוד על הפרויקט הזה, . תודיע לי בדוא (galvin.paul@gmail.com) אנו נעבוד אותו.

. הנה הפרויקט: http://sp2010explorer.codeplex.com/

</קצה>

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

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

עבודה עם TreeNodeBinding ב ASP.פקד NET Treeview

אני עובד על מה אני מקווה יהיה בקרוב שפורסמו CodePlex project מספק קצת משולב נחמד של web parts מדבר זה לזה באמצעות חיבורי ספק/הצרכן כדי לחקור את אתר SharePoint במצעים.  (זה בהחלט עשו לפני, אבל זה פרוייקט למידה ככל דבר אחר).  זה נועד לשמש תחליף תצוגת סייר windows SharePoint 2010 ספריות מסמכים.

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

<כתובת url של sitecollection =’http://demo2010a:9090′>
 
<אינטרנט
     כותרת = 'שלום עולם החול' 
     תבנית =' אתר המאפשר לצוותים לארגן במהירות, מחבר, ושיתוף של מידע, BLAH דבר BLAH'>

     <רשימת
        כותרת ='BCC_Health_Services_FAQs’
        תבנית ='CustomList’
       
listid =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</רשימת>

     <רשימת
        כותרת = 'BCC_Notifications' 
        תבנית = 'CustomList' 
        listid =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1-877 c-41 c 0-9063-b9612be80d5e’>
     </רשימת>

  </אינטרנט>

</sitecollection>

ציפיתי לנקות מעלה כי ה-XML לפני כל הוא אמר, לעשות.

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

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

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

 

image

זו אינה שימושית.  היא מסייעת המחלקה TreeNodeBinding בו.  אפשר להשתמש זה לספר הפקד Treeview כיצד הוא צריך לפרש את ה-XML.  הנה דוגמה:

tnb = TreeNodeBinding חדש();
tnb.DataMember = "רשימה"; // זהו תווית ה-xml עבור אתר.
tnb.TargetField = "listid";
tnb.ValueField = "כותרת";
tnb.ToolTipField = "תבנית";

איגוד זה מספר treeview כי כאשר הוא מוצא <רשימת> צומת ב- XML, החל האיגודים עבור TargetField, ValueField, ToolTipField.  במאי יישום, אלה למפות באופן הבא:

  • TargetField: כאשר מישהו לוחץ על ערך צומת, זהו מה תקבל עבור SelectedNode.Value.  זהו לבלבל עם...
  • ValueField: זהו מה ברצונך Treeview כדי להציג למשתמש.
  • ToolTipField: ערך ה-XML הרצוי כתיאור.

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

 

image

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

</קצה>

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

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

התחברות מסנני שדה טקסט ה-Web Part מותאם אישית

רציתי לקבל מידע מ מסנן שדה טקסט ב- SharePoint 2010 לחלק שלי אינטרנט מותאם אישית '.  ניסיתי להשתמש מאמר MSDN כבסיס אבל המאמר או שבור או אני פשוט לא מבין זה כראוי.

מחפש עוד קצת הופיע של מייק סמית התרומה MSDN כאן (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

יש הרבה דברים שם בחוץ על רכיבי web part ו"יצירת אבל המאמר של מייק הוא פשוט כמו שזה.

</קצה>

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

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

מהיר וקל: שלח דואר אלקטרוני באמצעות שרת ה-SMTP ב- Gmail ב .NET C #

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

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

שימוש System.Net.Mail;
שימוש System.Net;

NetworkCredential loginInfo = חדש NetworkCredential("[תעודת הזהות שלי ב- Gmail]", "[הסיסמה שלי ב- Gmail]");
הודעת דואר מונוסודיום גלוטמט = חדש הודעת דואר();
מונוסודיום גלוטמט.מ = חדש MailAddress("[M ב- Gmail מזהה]@gmail.com");
מונוסודיום גלוטמט.To.Add(חדש MailAddress("paul.galvin@arcovis.com"));
מונוסודיום גלוטמט.הנושא = "מבחן infopath dev נושא";
מונוסודיום גלוטמט.הגוף = "<html><הגוף><חזקה>מסר חזק.</חזקה></הגוף></html>";
מונוסודיום גלוטמט.IsBodyHtml = נכון;

foreach (מחרוזת aFile ב NIPFD.GetAttachmentNamesAndLocations())
{
    מונוסודיום גלוטמט.Attachments.Add(חדש קובץ מצורף(aFile));
} // הוספת קבצים מצורפים.

SmtpClient לקוח = חדש SmtpClient("smtp.gmail.com");
לקוח.EnableSsl = נכון;
לקוח.UseDefaultCredentials = שווא;
לקוח.אישורי = loginInfo;
לקוח.יציאה = 587;
לקוח.EnableSsl = נכון;
לקוח.שלח(מונוסודיום גלוטמט);

כמה סיביות מפתח האטה אותי ותצפיות אחרים / הערות:

  • הקו הראשון שיוצר את האובייקט loginInfo צריך להשתמש את gmail שמזהה מרשיונך "@gmail.com”. כל כך, אם כתובת הדואר האלקטרוני שלי ב- gmail "! sharepoint@gmail.com"ואת הסיסמה שלי היא"xyzzy ב"אז הקו היה דומה:

NetworkCredential loginInfo = חדש NetworkCredential("sharepoint", "xyzzy");

  • החשבון שלי ב- gmail מוגדר לשימוש ב- SSL, זו לא היתה בעיה.
  • יש איזה מידע סותר לשם ביציאה מה להשתמש. השתמשתי יציאה 587 וזה עבד בשבילי.
  • במקרה שלי, רציתי גם לשלוח קבצים מצורפים. האובייקט NIPFD לו שיטה שיודע איפה הקבצים המצורפים שלי. . זה חוזר נתיב מלא (המסופקים. "c:\tempattachment1.jpg". במבחן שלי, מצורפים שני ואני שניהם עבד מצוין.

השתמשתי visual studio 2008 כדי לכתוב את הקוד הזה.

</קצה>

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

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

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