1

Web サービスを使用して SharePoint リストにレコードを挿入しようとしています。すべて正常に動作しますが、説明付きのハイパーリンクをアップロードできません。アップロードしようとすると、「0x81020020 URL フィールドに無効なデータが含まれています」というエラーが表示されます。

http://www.somewebpage.comをアップロードするだけで問題なく動作します が、説明が必要なので、ここをクリックしてアップロードしようとしています

エンコードする必要があることはわかっています。

        /// <summary>
    /// Insert Record to Sharepoint
    /// </summary>
    public void InsertDayRecord(Drivers Driver, string startTime, string FinishTime, string breakTime, string totalHours, Equipment truck, Equipment trailer, 
        string hoursType, bool overNight, string notes, string documentUrl)
    {

        System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
        System.Xml.XmlElement elBatch = xmlDoc.CreateElement("Batch");

        //encode notes
        notes = System.Net.WebUtility.HtmlEncode(notes);

        //Add url to link to display description - this causes error
        string url = "<a href=\"" + documentUrl + "\">download</a>";
        url = System.Net.WebUtility.HtmlEncode(url);


        //Build XML
        StringBuilder sb = new StringBuilder();
        sb.AppendFormat("<Method ID='1' Cmd='New'><Field Name='ID'>New</Field><Field Name='Title'>{0}</Field><Field Name='Start_x0020_Time'>{1}</Field>", Driver.DriverName, startTime);
        sb.AppendFormat("<Field Name='Finish_x0020_Time'>{0}</Field><Field Name='Break_x0020__x0028_Minutes_x0029'>{1}</Field>", FinishTime, breakTime);
        sb.AppendFormat("<Field Name='Total_x0020_Hours'>{0}</Field><Field Name='Truck'>{1}</Field>", totalHours, truck.EquipmentWithId);
        sb.AppendFormat("<Field Name='Over_x0020_Night'>{0}</Field><Field Name='Notes'>{1}</Field>", overNight.ToString(), notes);
        sb.AppendFormat("<Field Name='Trailer'>{0}</Field><Field Name='Driver'>{1}</Field>", trailer.EquipmentWithId, Driver.DriverWithId);

        //If file is uploaded add hyperlink
        if (documentUrl != string.Empty)
            sb.AppendFormat("<Field Name='Scanned_x0020_Timesheet'>{0}</Field>", url);

        sb.AppendFormat("<Field Name='Hours_x0020_Type'>{0}</Field>", hoursType);
        sb.Append("</Method>");

        elBatch.InnerXml = sb.ToString();

        //upload to sharepoint via lists.asmx
        XmlNode Success = GetService().UpdateListItems("TimeSheets", elBatch);
    }
4

1 に答える 1