Zum Hauptinhalt wechseln
VHelms

Isrichtig.de

Startet die Suche
Homepage
Kontakt
Impressum
  

RSS-Feed
Isrichtig.de > Kategorien
SharePoint: E-Mail an DocLib funktioniert nicht.
Hallo,
 
heute hatte ich das Problem das plötzlich Mails an verschiedene DocLibs nicht mehr ankamen. Andere DocLibs funktionierten Problemlos. Nach kurzer Suche konnte ich feststellen, dass DocLibs die mit "Accept e-mail messages based on document library permissions" konfiguriert waren keine Mails mehr empfangen konnten.
 
Bei genauerer Untersuchung konnte ich herausfinden das SharePoint zur Überprüfung der SendIn Permission den X-Sender einer Mail nutzt. Warum dies so ist und warum nicht z.B. der From Wert genutzt wird weiß ich nicht.
Nun können in dem X-Sender Feld aber noch zusätzliche Informationen abgelegt werden.
Unter anderem gibt es verschiedene Mailgateways die dort zusätzliche Werte angeben. Zum Beispiel kann dort Bounce Address Tag Validation angegeben werden. Dies wird genutzt um überflüssige NDRs zu eliminieren (ob das allerdings so sinnvoll ist sei mal dahingestellt).
Ein solches Tag sieht Beispielsweise so aus: "x-sender: prvs=1755da8e48=Volker.Helms@testmail.com"
Das BATV Tag ist dann "prvs=1755da8e48=".
SharePoint kommt aber bei der Auflösung des Absenders durch dieses Tag durcheinander und sieht die Mail als nicht berechtigt an. Das heißt SharePoint verwirft die Mail (und informiert keinen Absender - Im Eventlog steht eine Access Denied Meldung).
Nachdem wir dieses Tagging wieder aus den Mails entfernt hatten funktionierte auch der Empfang wieder.
 
Gruß,
Volker
SharePoint: SiteCollection über SiteCollection ID finden
Hallo,
 
häufig gibt SharePoint Meldungen mit der SiteCollection ID heraus. Leider weiß man dann nicht welche SC es eigentlich ist. Nun könnte man natürlich alle Site Collections durchschauen - es gibt aber auch eine andere Lösung. Dazu ruft man einfach die URL zur Pflege der Site Collection Administrators in der Central Administration auf. Nachdem man einmal die Site Collection im Menü gewechselt hat sieht man folgende URL im Browser:
 
 
Nun kann man einfach die Site Collection ID, nach der gesucht werden soll, ausgetauscht werden und schwubs wird die entsprechende Site Collection angezeigt.
 
Gruß, Volker
Windows 7: Probleme mit Sharepoint Explorer View/ Office Dokumenten
Unter Windows 7 oder Vista gibt es häufig Probleme mit der Explorer View oder mit dem Zugriff von Officedokumenten. Das Problem äußert sich dann so, dass das Internet Explorer Fenster einfriert oder wiederholt Anmeldefenster angezeigt werden.
 
Das Problem liegt daran wie Windows die Seite interpretiert. Ist in der URL kein Punkt (.) wird die Seite als LocalSite interpretiert. Ist ein Punkt in der URL ist die Seite nicht Lokal. Häufig kann das Problem behoben werden in dem die Seite in die Lokale Intranetzone des Internet Explorers explizit eingetragen wird. Alternativ habe ich gerade einen weiteren Tipp von Boris Gomiunik gefunden.
Er schlägt folgenden Workaround vor:
  • Open Regedit
  • Locate the following key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
  • Create a new Multi-String Key (Menu Edit –> New –> Multi-String Value)
  • Give the Key the name "AuthForwardServerList"
  • After the key has been created, modify its value (Right click it and select Modify)
  • Enter full URLs of your SharePoint sites (one per line).
  • Save and exit registry editor
  • If you use Windows Vista you need a special Hotfix - you don't in Windows 7
  • Restart the Service WebClient Service in Windows Services.
Anonymer User hat keinen Zugriff auf Seiten im Layouts Ordner
Ein anonymer User hat auf einer SharePoint Seite keinen Zugriff auf Seiten im Layouts Ordner (also auf Seiten die direkt auf der Festplatte liegen). Dies ist ja erst einmal richtig da ein User ja nicht alle Seiten aufrufen können soll. Nun kann es aber passieren, dass z.B. ein User in einer SharePoint Webseite Zugriff auf eine DocLib hat, aber keinen Zugriff auf die komplette Webseite. Nun wäre es ja denkbar das ein solcher Anwender auch bestimmte Seiten aus dem Layoutsordner aufrufen können soll.
 
Dazu bietet SharePoint tatsächlich eine Lösung:
Leitet die Webseite im Layoutsordner von "Microsoft.SharePoint.WebControls.LayoutsPageBase" ab kann ein anonymer User nicht auf die Seite zugreifen.
Leitet die Webseite im Layoutsorder aber von "Microsoft.SharePoint.WebControls.UnsecuredLayoutsPageBase" ab können die anonymen User die Seite aufrufen.
 
Weitere Sicherheit kann natürlich im Code implementiert werden.
User bekommt Access Denied beim Dokument umbenennen
Dank René konnte ich heute relativ schnell herausbekommen warum ein Anwender in einer Sharepoint Dokumentbibliothek den Namen (Filename) eines Dokuments nicht ändern konnte. Der Anwender hatte Edit und sogar Approve Rechte. Das sollte ja normalerweise ausreichen. Reicht aber nicht! Ein Rename des Dokuments entspricht Sharepoint intern einem Movebefehl und zu einem Movebefehl gehört auch immer ein delete. Ein Benutzer benötigt also neben dem Editrecht auch das Deleterecht.
 
Wichtig zu wissen ;-)
SPGridView zeigt paging nicht an

Gestern hatte ich das Problem, dass ich in einem SPGridView das Paging angeschaltet hatte - die Pagingcontrols aber nicht angezeigt wurden.
Angeschaltet habe ich das Paging mit:

SPGridView oGrid = new SPGridView();
oGrid.AllowPaging = true;
oGrid.PageSize = 3;

Sollte also soweit funktionieren - tut es aber nicht. Nachdem ich ein wenig gesucht habe, habe ich hier einen Forumseintrag gefunden der des Rätsels Lösung brachte.

Warum auch immer muss nach aktivieren des Pagings und vor dem hinzufügen des Controls zur Collection das Pagingtemplate auf NULL gesetzt werden:

oGrid.PagerTemplate = null;

Anschließend funktioniert das Paging total prima.

SharePoint: Choicefield (multiple selection) über "Edit in Datasheet" hinzufügen
Hallo,
 
ich habe heute versucht in einer Liste Einträge über "Edit in Datasheet" hinzuzufügen. In der Liste gab es sowhl ein Feld für Yes/No als auch ein Choicefield mit einer Multiauswahl. Um die Elemente (aus einer Exceltabelle) hinzuzufügen sind spezielle Formatierungen notwendig. Direkt aus Excel hat es bei mir gar nicht geklappt. Über den Umweg Notepad hat es dann aber funktioniert. Die Formatierungen müssen wie folgt aussehen:
 
Choicefield:
;#Monday;#Tuesday;#Wednesday;#Thursday;#Friday;# Hier ist wichtig das die Auswahl mit ";#" beginnt, getrennt und auch beendet wird. Hier mein Beispiel für die Auswahl der Wochentage.
Yes/No Field:
No = 0, Yes = 1. Interessanterweise muss bei einer Bearbeitung in Access No = false und Yes = true sein. Warum weiß ich aber auch nicht.
 
Gruß, Volker
EventHandler wird mehrfach gestartet

Hallo,

ich hatte heute ein Problem mit einem EventHandler auf einer Liste. Den Handler hatte ich selbst geschrieben und sobald ich im Debugging war konnte ich feststellen das bei einer Änderung an einem Element meiner Liste der EventHandler 3 mal gestartet wurde. Das ist natürlich viel zu viel! Also habe ich meinen Code überprüft um festzustellen ob ich vielleicht im Handler ein Update auf mein eigenes Item mache. Dies habe ich zwar getan – mein item.SystemUpdate() war aber mit einem DisableEventFiring() und einem EnableEventFireing() umgeben. Deshalb sollte der Handler sich nicht selbst aufrufen können. In diesem Zusammenhang möchte ich auch noch darauf hinweisen das auch bei einem item.SystemUpdate() ein EventHandler gestartet wird. Häufig wird dies übersehen!

Nach längerem suchen habe ich dann herausgefunden das in meiner Liste ein CustomFieldType genutzt wurde. Im Code des CustomFieldType wurde ebenfalls ein item.SystemUpdate() aufgerufen und dieses war nicht mit einem DisableEventFiring() umschlossen. Also schnell eins drum herum gebaut und schon…

Mist! Die Methode DisableEventFiring() gibt es nur in einer EventHandler Klasse. Der Zugriff auf die Methode aus anderen Klassen ist nicht möglich. Also mal schnell Google angeworfen und folgende Seite aufgerufen: http://unclepaul84.blogspot.com/2007/12/disable-event-firing-in-sharepoint-when.html

Paul Kotlyar hat eine eigene Klasse geschrieben mit der er per Reflection das Property DisableEventFiring setzten kann. Da die Klasse bei ihm nicht so ganz sauber läuft möchte ich die hier noch einmal kurz als .cs Datei anbieten:

SPEventManagerWrapper

Zur Benutzung muss die Datei einfach mit ins Projekt eingebunden werden und eventl. noch der Namespace angepasst werden. Schon könnt ihr auch von anderen Klassen (z.B. einem CustomFieldType) das Eventfiring deaktivieren.

Auch bei mir hat die Klasse Wunder bewirkt. Kaum hatte ich das Eventfiring in meinem CustomFieldType ausgeschaltet wurde mein Handler auch nur noch ein mal und nicht 3 mal gestartet. Prima!

Gruß,
Volker

Webpart wird nach “Apply” nicht aktualisiert

Hallo,

ich hatte das jetzt schon häufiger in verschiedenen Webparts. Ich ändere etwas in der Toolpane (also in den Einstellungen) und klicke anschließend auf “Apply”. Leider werden die Einstellungen dann nicht übernommen. Wenn ich dann erneut auf “Apply” klicke oder die Seite neu lade sind die geänderten Einstellungen aktiv. Nach langem suchen habe ich bei Waldek Mastykarz die passende Lösung gefunden.

Das Problem liegt ganz einfach am sog. Lifecycle einer Webseite. Die Verschiedenen Events werden in einem Lifecycle nacheinander aufgerufen. Leider werden die Einstellungen die gerade geändert wurden erst nach einem OnLoad Event mit dem Webpart synchronisiert. Wenn also die Controls des Webparts bereits im OnLoad Event mit Werten gefüllt werden sind die Einstellungen noch nicht synchronisiert und die Controls nutzten noch die alten Einstellungen. Beim zweiten Aufruf werden dann die aktuellen Einstellungen genutzt da diese dann synchronisiert sind.

Um also die Einstellungen gleich beim ersten “Apply” nutzten zu können müssen wir einen Event des Lifecycles nehmen der etwas später als der OnLoad Event ausgeführt wird. Waldek schlägt hier vor den OnPreRender Event zu nutzten. Dabei haben die Webparts dann dann die neuen Einstellungswerte sofort zur Verfügung. Die Controls selbst sollten natürlich nach wie vor im CreateChildControls Event hinzugefügt werden.

Gruß,
Volker

Fehlerhafte Webparts von Seite entfernen
Hallo,
 
noch einmal zur Erinnerung da ich selbst den URL Parameter immer wieder vergesse. Um fehlerhafte Webparts von einer Seite zu entfernen kann man an die Webseite einfach folgenden Parameter anhängen:
 
z.B.: default.aspx?contents=1
 
Anschließend einfach das Webpart löschen und die Seite lässt sich ohne Probleme wieder aufrufen.
 
Gruß,
Volker
1 - 10 Weiter