Homepage - Isrichtig.de
Zum Hauptinhalt wechseln
VHelms

Isrichtig.de

Suchen
Homepage
Kontakt
Impressum
  
 

RSS-Feed

Blog von Volker Helms
Januar 06
Easy WSP deployment
I have created a regfile and 2 batchfiles for easy wsp solution deployment on a SharePoint server. The regfile will add 2 context menu entries in the windows explorer. The batchfiles must be placed in the SharePoint BIN folder in the 14 hive.
 
 
Happy deploying,
Volker
 
Screenshot:
2012-01-06 09h37_20.png
November 22
Error – Failed to get value of the "ColumnName" column from the "Managed Metadata" field type control. See details in log. Exception message: Invalid field name. {GUID}
Yesterday I get this error message if I want to save an Publishing Page with an ContentType containing a Managed Metadatacolumn. After some googling I found some nice info's from Ari Bakker.
The problem occurs because the Managed Metadata Column creates an additional field named MMdColumnName_0 from type Note. In the Metadata Column the Notecolumn is mapped through the TextField Property. If the TextField Property is empty or has the wrong guid the error occours. So if the error occurs please compare the guid with the ID from the Notecolumn via SPM2010 (The column is hidden) and corret the guid. If the Note column is not availible please add the Column to the list or the content type and correct the guid in the metadata column.
 
Volker
Oktober 28
Get ID from Term to Filter Managed Metadata Field

Hi,
today, I have to find out the ID from a term to filter a Managed Metadata field with url parameters (listviewwebpart). The term itself gives me an id. So how to find out the assigned id. First, important to know is, the spweb has a hidden list named “taxonomyhiddenlist”. The list contains items which are associated with the terms.

So I googled a little bit and find this nice page from Peter Holpar who has written the necessary code. I have optimized the code a litte bit.

        public static int GetWssIdByTermId(SPWeb rootWeb, Guid termId)
        {
           int result = -1;
           if (rootWeb.Properties.ContainsKey("TaxonomyHiddenList"))
           {
              var taxonomyHiddenListId = new Guid(rootWeb.Properties["TaxonomyHiddenList"]);
              SPList taxonomyHiddenList = rootWeb.Lists[taxonomyHiddenListId];
              var query = new SPQuery {Query = String.Format(@"<Where><Eq><FieldRef Name='IdForTerm' /><Value Type='Text'>{0}</Value></Eq></Where>", termId)};
              SPListItemCollection items = taxonomyHiddenList.GetItems(query);
              if (items.Count == 1)
              {
                 result = int.Parse(items[0]["ID"].ToString());
              }
           }
           return result;
        }

Volker

Oktober 28
SetUrlParameter

This Codesnippet sets or adds an Url Parameter to a string.

        public static string SetUrlParameter(string url, string key, string value)
        {
            // find url parameter and replace or add if not availible
            var startIndex = url.IndexOf("?") + 1;
            if (startIndex == 0)
            {
                return string.Format("{0}?{1}={2}", url, key, value);
            }
            var oldQueryString = url.Substring(startIndex);
            var queryParameters = HttpUtility.ParseQueryString(oldQueryString);
            queryParameters[key] = value;
            return url.Substring(0, startIndex) + queryParameters;
        }
Oktober 17
RDP Zugriff Windows 2008R2: gleicher User – 2 Sessions

Unter Windows 2008R2 hat sich das Verhalten bei der Benutzung von RDP Sessions etwas geändert. Unter 2003 konnte man sich mit einem Anwender durchaus mehrfach anmelden (z.B. einmal an die Konsole und ein weiteres mal als Session). Unter 2008R2 wird für jeden User immer nur eine Session erstellt. Nutzt man einen Admin Account um den Server zu administrieren kommt es nun häufig vor, dass man dem netten Kollegen nebenan die Session klaut. Dies kann auf 2 unterschiedlichen Wegen wieder geändert werden, sodass sich der Server wie unter 2003 verhält.

1.

In dieser Variante kann einfach eine Gruppenrichtlinie erstellt werden, die das alte Verhalten wiederherstellt. Falls man keine globalen Gruppenrichtlinien konfigurieren, oder das Verhalten nur auf einem einzelnen Server nutzten möchte kann die Einstellung auch in der Lokalen Richtlinie eingestellt werden. Hier dazu ein Bild:

clip_image001

Der Eintrag heißt “Restrict Remote Desktop Services users to a single Remote Desktop Services Session”.

2.

Bei der zweiten Variante wird die Einstellung direkt über die Remote Desktop Connection Konfiguration durchgeführt. Dazu einfach unter Start in das Suchfeld "Remote Desktop Session Host Configuration" eingeben und im Fenster den Punkt "Restrict each user to a single session" Doppelklicken und entsprechend ändern. Hier ein Bild dazu:

clip_image001[6]

Gruß,
Volker

Oktober 12
SharePoint Databaseattach - Site Collection fehlt
Hallo,
heute hatte ich das Problem, dass ich ein SQL Datenbankbackup zurückgespielt hatte und diese ContentDB an eine WebApplication gehängt hatte. Dort sind dann 3 von 4 Site Collection aufgetaucht. Eine hat gefehlt. Blöderweise war das genau die wichtige Site Collection. Also einmal in das SharePointLog geschaut und folgende Einträge gefunden:
 
SqlError: 'Violation of PRIMARY KEY constraint 'PK_SiteMap'. Cannot insert duplicate key in object 'dbo.SiteMap'. The duplicate key value is (43997c8a-697c-4069-a3b2-fb195be6ed6a, 0x).' Source: '.Net SqlClient Data Provider' Number: 2627 State: 1 Class: 14 Procedure: 'proc_putSiteMap' LineNumber: 17 Server: 'server01'
und
The site named /sites/test and with id 43997c8a-697c-4069-a3b2-fb195be6ed6a was found in the content database WSS_Content_01 in the database server server01. However, the following error was reported while adding a mapping to this site to the configuration database. Operation is not valid due to the current state of the object.
 
Wie ich feststellen konnte sind diese beiden Fehler mit der gleichen Guid verknüpft - also haben die etwas mit einander zu tun. Bloß was? Nach einer kleinen Grübelrunde bin ich darauf gekommen.
Das System ist ein DEV System und um die Entwicklungsumgebung als Testsystem (für Anwender) zur Verfügung zu stellen sollte die Site Collection erneut zum SharePoint hinzugefügt werden.
Nutze ich stsadm -o backup/ restore funktioniert das ja wenn die beiden Seiten in unterschiedlichen Datenbanken liegen. In der gleichen Datenbank klappt es nicht, da sonst eine ID doppelt wäre. In meinem Fall wurde aber nicht stsadm genutzt sondern das SQL Backup.
Dadurch haben wir eine 1:1 Kopie. Wie es aussieht kommt es dann zu den oben genannten Fehlern und die Site Collection wird in der CA nicht angezeigt. Stsadm verändert beim Restore also einige Werte, sodass das zurückspielen funktioniert.
 
Gruß, Volker
Juli 29
Visual Studio Einstellungen & Extensions sichern/ synchronisieren

Wer das Visual Studio, so wie ich, auf mehreren Rechnern nutzt, hat wahrscheinlich auch das Problem, dass entweder die Einstellungen unterschiedlich sind oder man die passende Extension wieder nicht installiert hat. Ich habe dazu einmal ein wenig im Internet herumgesucht und folgende Lösung gefunden:

Pepper ist eine Extension von Robert MacLean. Die Extension ist noch nicht so alt und kann eventl. noch ein paar Probleme verursachen – bei mir hat aber alles gut funktioniert. Nachdem die Extension installiert und VS 2010 neu gestartet wurde kann im Tools Menü der Punkt “Peppers: VS Settings Backup and Sync” aufgerufen werden. Im Popup Fenstern können dann die Einstellungen hoch- oder runtergeladen werden. Die Einstellungen selbst werden in Windows Azure von Robert gespeichert. Falls man beim hochladen noch keinen Account hat kann man diesen einfach durch Eingabe einer Mailadresse und eines Kennworts erstellen. Beim Download müssen dann die gleichen Werte genutzt werden.

2011-07-29 08h15_11

ExtensionSync ist dann das zweite Tool mit dem die Extensions zwischen Visual Studio Installationen synchronisiert werden können. Das Tool speichert die momentan installierten Extensions in einer XML Datei ab. Der Pfad in der die XML Datei abgelegt wird kann über Tools/ Optionen/ ExtensionSync konfiguriert werden. Das Tool arbeitet dann so, dass beim Beenden von VS die Extensions in der XML Datei abgelegt werden und beim Starten die Extensions überprüft und fehlende geladen werden. Ich habe nun diese XML Datei auf meinen Dropbox Folder gelegt und synchronisiere die Extensions so zwischen verschiedenen Installation.

Gruß,
Volker

Juni 01
SharePoint: Last Modified or Editor Field

SharePoint has 2 different Last Modified fields. If you write some code and use one of these 2 fields you must ensure that you use the correct one. Here is a screenshot with both field values:

image

As you can see we have the SHAREPOINT\system account in the Modified_x0020_By field and a testaccount (named Muster, Max) in the Editor field. IMHO the Modified_x0020_By field is changed after you modify the item or document (I mean you must change the item properties). The Editor field is also changed if you only open the item in Editmode and click “OK” without modifying the item.

Mai 31
SharePoint Modified Field cannot be used in Calculated Field

Today I have to find out why the “Modified” field cannot be used in a calculate field. I found out that the field is configured as hidden. Why the "Modified" field is hidden - I don't know. I want to make it visible again. So I use the SPM to set the hidden value to false. But I get an exception because the value cannot changed. To change the value I have to set the "CanToggleHidden" value to true. I take a look at this and... can't change it because SPM greyed out this value. So I have to search for another hint. I found out that some Powershellscript helps:

$site = Get-SPSite http://test-local.com
$web = $site.OpenWeb("/NameOfWeb")
$list = $web.Lists["Pages"]
$field = $list.Fields["Modified"]
$type = $field.GetType();
$mi = $type.GetMethod("SetFieldBoolValue", [reflection.bindingflags]"nonpublic,instance");
$a = "CanToggleHidden", $true
$mi.Invoke($field, $a);
$field.Update();
$field.Hidden = $false
$field.Update();
Mai 25
How to modify or add URL Parameters

Hi,

to add or modify URL parameters to an url use the following code:

private static string SetUrlParameter(string url, string key, string value)
{
    var startIndex = url.IndexOf("?") + 1;
    if (startIndex == 0)
    {
        return string.Format("{0}?{1}={2}", url, key, value);
    }
    var oldQueryString = url.Substring(startIndex);
    var queryParameters = HttpUtility.ParseQueryString(oldQueryString);
    queryParameters[key] = value;
    return url.Substring(0, startIndex) + queryParameters;
}
1 - 10Weiter

 Archiv

Easy WSP deployment
Error – Failed to get value of the &quot;ColumnName&quot; column from the &quot;Managed Metadata&quot; field type control. See details in log. Exception message: Invalid field name. {GUID}
Get ID from Term to Filter Managed Metadata Field
SetUrlParameter
RDP Zugriff Windows 2008R2: gleicher User – 2 Sessions
SharePoint Databaseattach - Site Collection fehlt
Visual Studio Einstellungen &amp; Extensions sichern/ synchronisieren
SharePoint: Last Modified or Editor Field

 Downloads

WspDeployment.zipWspDeployment
Wiki2HtmlSrc.zipWiki2HtmlSrc
Wiki2HtmlPrg.zipWiki2HtmlPrg
MultiWebConfigManager.txtMultiWebConfigManager
HttpDownload.txtHttpDownload
1 - 5Weiter