Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

Performance-Optimierung in SharePoint durch Entfernen von ActiveX Control (NAME.DLL)

Problem

 

Gelegentlich erscheint beim Verwenden von SharePoint-Websites im Internet Explorer eine gelbe Warnleiste mit der Meldung, dass die Website das Add-On "Name ActiveX Control" aus­füh­ren möchte.

 

Ursache

 

Dieses Problem tritt auf, wenn man mit dem Internet Explorer 7 eine SharePoint-Website auf­ruft, die nicht als "Vertrauenswürdige Site" ein­ge­tra­gen ist, und diese ver­sucht, das ActiveX Control "NameCtrl" zu laden.

Öffnet man eine Intranet-Website, so erscheint diese Meldung nicht, da Intranet-Websites auto­ma­tisch vom Internet Explorer als ver­trau­ens­wür­dig ein­ge­stuft wer­den und die­ser dann das ActiveX Control ohne Nachfrage aus­führt.

Dieses ActiveX Control wird ver­wen­det, um Anwesenheits-Informationen zu Benutzern anzu­zei­gen, dazu inte­griert es sich mit Outlook und Communicator. (Mehr Informationen dazu siehe: ActiveX und Browserkompatibilität in MOSS 2007 – Artikel 1/2 )

Dies mag im Intranet ein sinn­vol­les Feature sein, hat aber auf einer Website nichts zu suchen.

Zudem denkt man beim Name "name.dll" zuerst an einen Trojaner o.ä., der Bezug zu SharePoint ist für den nor­ma­len Anwender nicht her­stell­bar.

 

Lösung

 

Der von Microsoft im KB-Artikel 931509 vor­ge­schla­gene Lösungsweg funk­tio­niert lei­der nicht zuver­läs­sig, der er die Lade-Reihenfolge der ver­schie­de­nen JavaScript-Dateien nicht berück­sich­tigt.

Deshalb ist fol­gen­der Ansatz bes­ser:

Suchen Sie in Ihrer MasterPage im Abschnitt <head> nach dem PlaceHolderAdditionalPageHead und ändern Sie ihn wie folgt ab:

<head runat="server">
    <asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server"/>
    <script type="text/javascript" src="/_catalogs/masterpage/custom_activex_override.js"></script>
</head>

Legen Sie zusätz­lich im MasterPage-Katalog die ent­spre­chende Datei "custom_activex_override.js" ab.

Diese sollte fol­gen­den Inhalt haben:

	function ProcessDefaultOnLoad(onLoadFunctionNames)
	{
		//** Uncomment this to see when this runs
		//alert('Fixing the Issue');

		ProcessPNGImages();
		UpdateAccessibilityUI();

		//** We comment out the offending ootb function
		//** and leave the rest of the functions as they were
		//ProcessImn();
		for (var i=0; i < onLoadFunctionNames.length; i++)
		{
			var expr="if(typeof("+onLoadFunctionNames[i]+")=='function'){"+onLoadFunctionNames[i]+"();}";
			eval(expr);
		}
		if (typeof(_spUseDefaultFocus)!="undefined")
			DefaultFocus();
	}

Dadurch wird die mit­ge­lie­ferte Funktion "ProcessDefaultOnLoad" über­schrie­ben, wel­che die Fuktion "ProcessImn()" auf­ruft, die sonst das NameCtrl ActiveX-Control auf­ru­fen würde.

 

Nebeneffekt: Performance-Steigerung

 

Da nun das unnö­tige ActiveX-Control nicht mehr gela­den wird, kann man je nach Ausstattung des Client-Systems Geschwindigkeitssteigerungen von bis zu meh­re­ren Sekunden beob­ach­ten, was den erst­ma­li­gen Seitenaufruf angeht. (Da muss sonst ja immer erst das Control initia­li­siert wer­den…)

Quellen: http://support.microsoft.com/kb/931509/en-us/, http://www.sharepointblogs.com/mossman/archive/2007/09/13/fixing-the-name-dll-activex-problem-the-mossman-way.aspx, http://www.katriendg.com/aboutdotnet/2007–9‑moss-issue-activex-ie7-931509.aspx

Related Posts

1 Kommentar

This is not working for me. I made the work­around descri­bed in http://support.microsoft.com/kb/931509/en-us no suc­cess.
So I tried your solu­tion, but it isn't working neit­her.
Here is my head part of my mas­ter. Are there any errors?
<head runat="server">
<meta name="GENERATOR" content="Microsoft SharePoint">
<meta http-equiv="Content-Type" content="text/html; charset=utf‑8">
<meta http-equiv="Expires" content="0">
<SharePoint:RobotsMetaTag runat="server"/>
<title id="onetidTitle"><asp:ContentPlaceHolder id="PlaceHolderPageTitle" runat="server"/> </title>
<Sharepoint:CssLink runat="server"/>
<!–Styles used for posi­tio­ning, font and spa­cing defi­ni­ti­ons–>
<SharePoint:CssRegistration name="<% $SPUrl:~SiteCollection/Style Library/xx/xx.css%>" runat="server"/>
<SharePoint:CssRegistration name="<% $SPUrl:~sitecollection/Style Library/xx/xxControls.css %>" runat="server"/>
<SharePoint:CssRegistration name="<% $SPUrl:~SiteCollection/Style Library/xx/xx_core.css%>" runat="server"/>
<SharePoint:ScriptLink language="javascript" name="InitNoPresence.js" runat="server"/>
<!–Placeholder for addi­tio­nal over­ri­des–>
<asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server" >
<script type="text/javascript" src="/_catalogs/masterpage/custom_activex_override.js"></script>
</asp:ContentPlaceHolder>
</head>

Regards, Pascal

Comments are closed.

Pin It on Pinterest