25
Jun
09

SharePoint, FQDN, ServiceAccounts und SSP Provisioning failed

In meiner letzten SharePoint Installation wurde ich mit einem Active Directory mit Windows NT 4.0 Wurzeln begrüßt. Die Domäne wurde von “kunde.de” auf “neu.kunde.de” upgegraded. Der NETBIOS Name der Domain ist somit “kunde.de” und der Full Qualified Domain Name (FQDN) ist “neu.kunde.de”. In der Vergangenheit hatte ich keine gute Erfahrung mit FQDN’s im Bezug auf den SQL Server gemacht. Mein Versuch den Server über den vollen Namen anzusprechend, ist gescheitert (Pre SP1 Erfahrung).

Im aktuellen Fall haben wir versucht, den FQDN für die Angabe der Domain Accounts in der Form “neu.kunde.de\accountname” zu verwenden. Bis zur Provisionierung des Shared Service Provider hat das auch super funktioniert. Das Erstellen des SSP endete mit folgender Seite:
image 

In der Liste der SSP’s gab es mehr Details:
image

Im Eventlog:
A runtime exception was detected. Details follow.
Message: Windows NT user or group 'ms.local\svcMossProd' not found. Check the name again.

A runtime exception was detected. Details follow. 
Message: Windows NT user or group 'ms.local\svcMossProd' not found. Check the name again.

Techinal Details:
System.Data.SqlClient.SqlException: Windows NT user or group 'ms.local\svcMossProd' not found. Check the name again.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command)
   at Microsoft.Office.Server.Data.SqlServerManager.GrantLogin(String user)
   at Microsoft.Office.Server.Administration.SharedResourceProvider.SynchronizeConfigurationDatabaseAccess(SharedComponentSecurity security)
   at Microsoft.Office.Server.Administration.SharedResourceProvider.SynchronizeAccessControl(SharedComponentSecurity sharedApplicationSecurity)
   at Microsoft.Office.Server.Administration.SharedResourceProvider.Microsoft.Office.Server.Administration.ISharedComponent.Install()
   at Microsoft.Office.Server.Administration.SharedResourceProvider.Provision()

Die SharePoint Logs:

06/24/2009 17:32:42.34     OWSTIMER.EXE (0x0788)                       0x0DC4    Office Server                     Office Server General             6pqn    High        Granting user 'ms.local\svcMossProd' login access to server 'moss-prod-db'.     
06/24/2009 17:32:43.04     OWSTIMER.EXE (0x0788)                       0x0DC4                                      484                               880i    High        System.Data.SqlClient.SqlException: Windows NT user or group 'ms.local\svcMossProd' not found. Check the name again.     at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)     at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)     at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)     at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)     at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)     at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(C...     
06/24/2009 17:32:43.04*    OWSTIMER.EXE (0x0788)                       0x0DC4                                      484                               880i    High        ...ommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)     at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)     at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)     at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()     at Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command)     
06/24/2009 17:32:43.04     OWSTIMER.EXE (0x0788)                       0x0DC4                                      484                               880j    High        SqlError: 'Windows NT user or group 'ms.local\svcMossProd' not found. Check the name again.'    Source: '.Net SqlClient Data Provider' Number: 15401 State: 1 Class: 11 Procedure: 'sp_grantlogin' LineNumber: 49 Server: 'W2K8-PROD-SQL'     
06/24/2009 17:32:43.04     OWSTIMER.EXE (0x0788)                       0x0DC4                                      484                               880k    High           at Microsoft.Office.Server.Data.SqlServerManager.GrantLogin(String user)     at Microsoft.Office.Server.Administration.SharedResourceProvider.SynchronizeConfigurationDatabaseAccess(SharedComponentSecurity security)     at Microsoft.Office.Server.Administration.SharedResourceProvider.SynchronizeAccessControl(SharedComponentSecurity sharedApplicationSecurity)     at Microsoft.Office.Server.Administration.SharedResourceProvider.Microsoft.Office.Server.Administration.ISharedComponent.Install()     at Microsoft.Office.Server.Administration.SharedResourceProvider.Provision()     at Microsoft.Office.Server.Administration.SharedResourceProviderJob.Execute(Guid targetInstanceId)     at Microsoft.SharePoint.Administration.SPTimerJobInvoke.Invoke(TimerJobExecuteData& data, Int32& result)       
06/24/2009 17:32:43.05     OWSTIMER.EXE (0x0788)                       0x0DC4                                      484                               880l    High        ConnectionString: 'Data Source=moss-prod-db;Initial Catalog=master;Integrated Security=True;Enlist=False;Pooling=False'    ConnectionState: Open ConnectionTimeout: 15     
06/24/2009 17:32:43.06     OWSTIMER.EXE (0x0788)                       0x0DC4                                      484                               880m    High        SqlCommand: 'sp_grantlogin'     CommandType: StoredProcedure CommandTimeout: 0     Parameter: '@loginame' Type: NVarChar Size: 128 Direction: Input Value: 'ms.local\svcMossProd'     
06/24/2009 17:32:43.12     OWSTIMER.EXE (0x0788)                       0x0DC4    Office Server                     Office Server General             900n    Critical    A runtime exception was detected. Details follow.  Message: Windows NT user or group 'ms.local\svcMossProd' not found. Check the name again.  Techinal Details: System.Data.SqlClient.SqlException: Windows NT user or group 'ms.local\svcMossProd' not found. Check the name again.     at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)     at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)     at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)     at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)     at System.Data.SqlClient.Sq...     
06/24/2009 17:32:43.12*    OWSTIMER.EXE (0x0788)                       0x0DC4    Office Server                     Office Server General             900n    Critical    ...lCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)     at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean re     
06/24/2009 17:32:43.13     OWSTIMER.EXE (0x0788)                       0x0DC4    Office Server                     Office Server Shared Services     7fxr    Exception    (Watson Reporting Cancelled) System.Data.SqlClient.SqlException: Windows NT user or group 'ms.local\svcMossProd' not found. Check the name again.     at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)     at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)     at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)     at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)     at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)     at System.Data.SqlClient.Sql...     
06/24/2009 17:32:43.13*    OWSTIMER.EXE (0x0788)                       0x0DC4    Office Server                     Office Server Shared Services     7fxr    Exception    ...Command.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)     at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)     at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)     at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()     at Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command)     at Microsoft.Office.Server.Data.SqlServerManager.GrantLogin(String user)     at Microsoft.Office.Server.Administration.SharedResourceProvider.SynchronizeConfigurationDatabaseAccess(SharedComponentSecurity security)     at Microsoft.Office.Se...     
06/24/2009 17:32:43.13*    OWSTIMER.EXE (0x0788)                       0x0DC4    Office Server                     Office Server Shared Services     7fxr    Exception    ...rver.Administration.SharedResourceProvider.SynchronizeAccessControl(SharedComponentSecurity sharedApplicationSecurity)     at Microsoft.Office.Server.Administration.SharedResourceProvider.Microsoft.Office.Server.Administration.ISharedComponent.Install()     at Microsoft.Office.Server.Administration.SharedResourceProvider.Provision()     

Aus irgendeinem Grund konnte der Account nicht korrekt auf den SQL Server zugreifen. Eine Analyse der IIS Application Pool Accouts hat gezeigt, dass dort einige Accounts in der Form “neu.kunde.de\accountname” (FQDN) und andere in der Form “neu.kunde\accountname” (NETBIOS) gespeichert wurden:
image

In der Datenbank werden die User wie folgt gelistet (NETBIOS):
image

Lösung:
Das Problem ist also der FQDN. Das Provisioning des SSP wird jede Minute erneut versucht und hinterläßt die entsprechenden Spuren im Eventlog und im SharePoint Log. Jetzt ist die Hilfe von STSADM gefragt, damit die Accounts wieder gerade gezogen werden können. Einfach alle Accounts nach Anleitung des folgenden KB auf die Form “kunde.de\accountanme” (NETBIOS) ändern:
KB 934838: How to change service accounts and service account passwords in SharePoint Server 2007 and in Windows SharePoint Services 3.0

Nach den Änderungen wurde der SSP provisioniert und ich konnte weiter machen :-)

Erst heute mit der Lösung “in der Hand” bin ich mit den richtigen Schlagwörtern über Bing.com zu folgendem Blog Post gekommen:
Thaddparker: Error in using FQDN Domain Names and MOSS 2007

Ein kurzer Check hat gezeigt, dass die Verwendung in Form von “accountname@neu.kunde.de” ebenfalls beim Provisionieren des SSP nicht funktioniert:

Application Server Administration job failed for service instance Microsoft.Office.Server.Search.Administration.SearchAdminSharedWebServiceInstance (15226029-e4cd-4ad6-aefc-965019284510). 

Reason: The specified account name is invalid.
Parameter name: account 

Techinal Support Details:
System.ArgumentException: The specified account name is invalid.
Parameter name: account ---> System.Security.Principal.IdentityNotMappedException: Some or all identity references could not be translated.
   at System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess)
   at System.Security.Principal.NTAccount.Translate(Type targetType)
   at Microsoft.Office.Server.Utilities.WindowsSecurity.ValidateAccount(NTAccount account, Boolean throwIfInvalid)
   --- End of inner exception stack trace ---
   at Microsoft.Office.Server.Utilities.WindowsSecurity.ValidateAccount(NTAccount account, Boolean throwIfInvalid)
   at Microsoft.Office.Server.Administration.SharedAccessRule.Validate()
   at Microsoft.Office.Server.Administration.SharedComponentSecurity.SetAccessRule(SharedAccessRule accessRule)
   at Microsoft.Office.Server.Administration.SharedResourceProvider.GetApplicationSecurity()
   at Microsoft.Office.Server.Administration.SharedWebServiceInstance.ProvisionSharedResourceProviderWebConfigSettings(SharedResourceProvider srp)
   at Microsoft.Office.Server.Administration.SharedWebServiceInstance.Synchronize()
   at Microsoft.Office.Server.Administration.ApplicationServerJob.ProvisionLocalSharedServiceInstances(Boolean isAdministrationServiceJob)

Leason learned? Es steckt halt immer noch zu viel Tahoe in SharePoint und NETBIOS rulez :-(

Ciao Marco

24
Jun
09

OCS, e-Book und ein weiterer Kollege bloggt

Ein weitere Kollege von Glück & Kanja versucht sich in der Blogosphäre ;-) Nach dem erfolgreichen Exchange-Pro-Expert-Guru und “Junior” C# Coder Jan Geisbauer ist nun auch Karsten Kleinschmidt mit von der Partie :-) Er betätigt sich zumindest in seinem Blog aktuell mit OCS (Office Communication Server). Sein aktueller Blogeintrag über das freie e-Book zum Thema OCS Programmierung war für mich ein Volltreffer :-)

image

Für eine OCS Applikation (Prototyp für Communicator Automation API und UCC API) habe ich doch glatt “entdeckt”, dass ich die Objekte aus dem Communicator Automation API per “System.Runtime.InteropServices.Marshal.ReleaseComObject(object)” frei geben muss :-)

Danke Karsten und weiter so.

Ciao Marco

24
Jun
09

Fresh SharePoint Install mit SP2 und Language Pack DE

Nachdem in letzter Zeit viel Maintenance an bestehenden Systemen betrieben wurde, gab es auch mal wieder eine Initialinstallation bei einem Kunden. Es wurde sich für ein Single Box Deployment entschieden. Folgende Details (sehr übliche Konfiguration und von mir empfohlene Konfiguration):

  1. Windows Server 2008 Standard – X64 – SP2 – EN
  2. Microsoft SQL Server 2008 Standard – X64 – SP1 – EN
  3. Microsoft SharePoint Server 2007 Standard – X64 – SP2 – EN – Language Pack German

imageIch hab mich an meine übliche Installationsreihenfolge gehalten und das Setup lief Weitestgehends reibungslos. Als einer der letzten Schritte kommt das Erstellen der Haupt-Portal-Applikation (in der Regel das Intranet Portal) an die Reihe. Ich installiere wann immer möglich ein englischen Basis SharePoint, damit man die Central Administration in Englisch bekommt. Für die Enduser muss es dann aber ein deutsches Portal sein, damit die Fachbereiche damit arbeiten können. Und was soll ich sagen… beim Erstellen der SiteCollection fehlt der DropDown für die Sprachauswahl :-S Für die Installation hatte ich einen alten Blog Post als Spickzettel verwendet: Wie installiere ICH SharePoint in einer Farm?

Ich hatte wie folgt installiert:

  1. MOSS x64 mit SP1 (Splistream Trial Download von MS)
  2. Language Pack DE x64 (gibt es nicht als SP1, also Download aus dem MSDN Sub.)
  3. WSS SP2 + WSS SP2 Language Pack (das Setup des Language Pack bracht ab und sagt es wäre nicht passend für das System)
  4. MOSS SP2 + MOSS SP2 Language Pack
  5. April CU WSS
  6. April CU MOSS
  7. PSCONFIG Wizard und erstellen einer neuen Farm

Bis auf den Punkt 3 Language WSS SP2 hat alles funktioniert. Ich habe ein paar alte Dokus zu reinen SP1 Installationen gecheckt und hatte das bisher genau so gemacht. Nach dem Language Pack habe ich WSS SP1 Language Pack und MOSS SP1 Language Pack installiert und das hatte beides funktioniert :-S Was war also los? Ich habe meine Testumgebung angeworfen und eine Neue SharePoint Farm erstellt. Genau dasselbe Verhalten. Dann mal an die Reparatur:

Versuch 1:

  1. Download WSS SP1 Language Pack x64 DE
  2. Installation bricht ab und sagt, es gäbe keine Software zu aktualisieren

Versuch 2:

  1. Download WSS Language Pack x64 DE
  2. Installation WSS Language Pack = OK
  3. Installation WSS Language Pack SP2 = OK
  4. Installation April CU WSS = OK
  5. PSCONFIG = OK

Anlegen einer neuen Website im Central Admin und siehe da… ein Language DropDown :-)

Mir ist nicht klar, warum das Verhalten von SP1 Fresh Install zu SP2 Fresh Install sich unterscheidet, oder ob sich meine Install Sources geändert haben, aber Microsoft macht es uns nicht wirklich einfach, mit all den Versionen. Bei einer Single Box Installation kann man fast auf das Splipstreamen verzichten und gleich mit der nackten Version beginnen, was allerdings unter Windows Server 2008 zu einem Warnhinweis führt (Kompatibilitätshinweis, der ignoriert werden kann solange man ein SP1 oder höher nach installiert).

Ich habe nach den Problemen meine Installationsanleitung aktualisiert:
Wie installiere ICH SharePoint in einer Farm?

Ciao Marco

 

24
Jun
09

Windows Server 2008 DNS Snap-In – Copy & Paste

imageManchmal sind es Kleinigkeiten, die mich erfreuen :-) Beim Eintragen eines A-Record über ein W2K8 Server ist mir eben aufgefallen, dass man hier endlich mit Copy & Paste arbeiten kann. Gerade im DNS kann ein Tippfehler echt tödlich sein :-) In den Vorgängerversionen waren die einzelnen Quads abgebildet und der Versuch, etwas in das geteilte Eingabefeld zu kopieren, scheitert. Manchmal in weniger mehr.

Ciao Marco

13
Jun
09

ADO.NET Data Services, Entity Framework und SQL/HTTP Timeouts

image Beim Arbeiten mit den ADO.NET Data Services (aka Astoria) kommt man irgendwann an den Punkt, dass die Aufgaben komplizierter werden oder die Last auf die Server steigt. In solchen Situationen ist man mit potentiellen Timeouts in allen Ebenen konfrontiert. In diesem Post zeige ich welche Timeouts es gibt, aber speziell will ich zeigen wie ich das Timeout des Entity Frameworks (SQL) in Kombination mit der MS REST Schicht ADO.NET Data Services anpassen kann.

Es bleibt anzumerken, dass in der aktuellen Version V1 ein Bug existiert. Die Serverkomponente wirft bei einem Timeout eine NullReferenceException anstatt die eigentliche Fehlermeldung, was leider nicht wirklich weiter hilft.

Welche Timeouts gibt es also und was sind die Defaults:

  1. HTTP Client Timeout – Browser
    Leider habe ich hier kaum Informationen gefunden… nichts was ich hier schreiben möchte.
  2. HTTP Client Timeout - ADO.NET Data Services Client Library
    Wo: Code
    Default: 100.000 Millisekunden (100 Sekunden) vererbt von HttpWebRequest.Timeout
    Mehr: MSDN - System.Data.Services.Client.DataServiceContext.Timeout
    Mehr: Microsoft KB 962933: Client Timeout Bug
    Mehr: ADO.NET Data Services Team Blog: Client Timeout Bug
  3. HTTP Server ExecutionTimeout
    Wo: web.config
    Default: 110 Sekunden (wenn Debug=False, dann unendlich)
    Mehr: httpRuntime Element (ASP.NET Settings Schema)
  4. ADO.NET Data Services Server Library
    Hier gibt es kein extra Timeout. Die unterliegende Connection (zum Beispiel SQL) bestimmt die Dauer.
  5. Entity Framework Connection/Command Timeout (SQL)
    Wo: Code
    Default: 30 Sekunden CommandTimeout
    Default: 15 Sekunden SqlConnection

Wenn wir uns nun um ein Timeout kümmern müssen wir also immer checken, ob wir damit gegen ein anderes rennen. Angenommen wir wollen unseren Sql Queries 5 Minuten Zeit geben (nur für das Beispiel!), dann müssen wir folgendes tun:

  1. Entity Framework Timeout = 5*60 = 300 Sekunden
  2. HttpServer Timeout = 5*60 + 10 (Puffer) = 310 Sekunden
  3. ADO.NET Data Services Client Timeout = 5*60*1000 + 20*1000 (Puffer) = 320.000 Millisekunden (320 Sekunden)

Wichtig: Wir brauchen überall ein wenig Puffer, sonst kann es sein, dass uns die Gesamtgeschwindigkeit der Maschine (da kann ja noch mehr Code dazwischen laufen) dazwischenkommt.

Jetzt zum eigentlichen Inhalt des Posts ;-) Wie kann ich überhaupt das Timeout des Entity Frameworks erhöhen. Die ADO.NET Data Service Website nutzt das Entity Framework und stellt so die Tabellen und Views zur Verfügung. Der Default Code in den SVC Dateien erlaubt es nicht die Connection zu beeinflussen:

 using System;
 using System.Web;
 using System.Collections.Generic;
 using System.ServiceModel.Web;
 using System.Linq;
 using System.Data.Services;
 using NorthwindModel;
 namespace SimpleDataService
 {
    public class Northwind : DataService<NorthwindEntities>
    {
        public static void InitializeService(IDataServiceConfiguration config)
        {
            config.SetEntitySetAccessRule("*", EntitySetRights.All);
        }
    }
 }

Die Klasse DataService<T> bietet nun eine Methode CreateDataSource mit der ich von Hand die EntityConnection erzeugen kann und somit auch den Command Timeout setzen kann:

protected override NorthwindEntities CreateDataSource() 
{ 
    var dbcon = new NorthwindEntities(); 
    dbcon.CommandTimeout = Core.Config.Application.TimeoutSql; //Core is my helper library
    return dbcon; 
}

Ich hoffe ich kann dem einen oder anderen weiter helfen :-) Mir weiter geholfen bei der Lösung hat folgender Blogpost:
Timeout in ADO.Net Entity Framework and ADO.Net Data Services

Ciao Marco

06
Jun
09

Aktuellsten SharePoint Patchstand finden

image Microsoft bietet unter folgender URL immer die letzte verfügbare PatchVersion für SharePoint 2007 an:
Cumulative updates are available from the Microsoft Office team to fix reported problems

Ciao Marco

06
Jun
09

Trusted Location in Office 2007

Wer mit SharePoint arbeitet und darin die üblichen verdächtigen Dateitypen der Office Familie verwendet, kennt vielleicht die Securityhinweise, wenn zum Beispiel Excel aus einer SharePoint Lib geladen wird. SharePoint gilt in solchen Situationen eigentlich als Vertrauenswürdig ;-) Also sollten wir es auch so behandeln. Hier ein paar Info’s wie man das machen kann.

Genereller Artikel:
http://technet.microsoft.com/en-us/library/cc178946.aspx#trustedsettings

Detail Informationen:
MS Excel Team Blog - Trust Center Part 4: Trusted Locations

image

Wie komme ich zu dem Dialog?
http://office.microsoft.com/en-us/help/HA100319991033.aspx

Alternativ kann man die Einstellungen auch per Group Policy setzen und im Unternehmen verteilen.

Ciao Marco

06
Jun
09

C# FTP gegen OpenVMS FTP Server

image In einem meiner letzten Projekte bin ich in die “glückliche” Lage gekommen, mit einer VAX über FTP zu kommunizieren. Gegen unser IIS7 FTP hatten alle Tests super funktioniert. Ich verbinde mich gegen den Server und mache dann einen Upload mit der Angabe der vollen URI:

Connect: ftp.servername.com

Upload File: /upd/knr/abc/request.txt

Mein erster Code nutzte die native C# FTP Api und antwortet einfach nur mit einem Fehler ohne Details. Ich habe dann auf eine Komponente von Aspose zurückgegriffen (wir nutzen Aspose.NET Total, was ich nur empfehlen kann). Ich bekam folgende Fehlermeldung:

Aspose.Network.Ftp.FtpException: Failed to upload file :500 %CLI-W-IVQUAL, unrecognized qualifier - check validity, spelling, and placement
at Aspose.Network.Ftp.FtpClient.Upload(Stream localStream, String remoteFilePath)
at Aspose.Network.Ftp.FtpClient.Upload(String localFilePath, String remoteFilePath)
at Ibu.Core.Utility.Ftp.UploadFile(String localFilename, Boolean append) in C:\Users\scheel\Code\ProjectX\Core\Utility\Ftp.cs:line 403
at ConsoleApplication1.Program.Main(String[] args)

Eine kurze Recherche brachte tatsächlich ein Ergebnis:
http://www.physiology.wisc.edu/comp/docs/mg/ftp_users_guide.html

If the remote file specification includes ``/'', it will be necessary to enclose the entire remote file specification in double quotes, because the FTP command interpreter interprets ``/'' as the beginning of a qualifier. Notice the difference in behavior on some systems if the remote file specification is and is not quoted.

Meine Lösung: Ich habe den führenden Slash einfach weg gelassen und schon hat es funktioniert.

Ciao Marco

06
Jun
09

SharePoint - Send To - Could not find the destination item or folder on this server.

image SharePoint und WSS können Dokumente von einer Bibliothek in eine andere, über ein DropDown Menü am Item selber, kopieren. Jetzt hatten wir bei einem Kunden ein echt komisches Problem. Auf einigen Rechnern gab es ein Problem beim Kopieren. Es ist auch aufgefallen, das bei einem Test auf einem Windows Server 2003, die Oberfläche für den Dialog ganz anders aussieht, also auf einer Standard Workstation. Mit Office 2007 auf der Maschine nutzt der Client ein ActiveX Control. Ohne ActiveX nutzt SharePoint eine ASPX Page und die kann zwar über SiteCollections hinweg kopieren, aber nicht über Application, also von http://portal.ms.local auf http://mysite.ms.local

Das ganze wird hier beschrieben:

http://office.microsoft.com/en-us/help/HA101208501033.aspx

By default, you can use the Send To command to copy files to libraries within a site collection. If you copy files from a client computer that has a program that is compatible with Microsoft Windows SharePoint Services 3.0, such as Microsoft Office Word 2007, and a browser that supports Microsoft ActiveX Controls, such as Microsoft Internet Explorer, you can use the Send To command to copy files not only between libraries within a site collection, but also between different Web applications. If you copy files from the browser of a client computer that does not support ActiveX Controls, you will be able to copy files only to libraries within site collections that share the same domain name (top-level site name) as the source library.

Ciao Marco

06
Jun
09

Tolles Trio – Eventlog, Task Scheduler und Eventcreate.exe – Attach task to this event

Seit Vista und Windows Server 2008 kann man den Task Scheduler sehr vielfältig einsetzen. Eine sehr praktische Funktion ist das Auslösen von Aktionen (Email, Run Program, etc), wenn ein spezielles Event eintritt. Entweder man erstellt den Task direkt im Task Scheduler oder man kann auf das entsprechende Event klicken und ein Task anhängen.

image

Jetzt stellt sich die Frage, wie man das ganze aber testen kann? Warten bis das Event ausgelöst wird? Die Situation erzwingen? Je nach Komplexität der Anwendung oder der Situation, die den Event erzeugt, kann das nicht ganz befriedigend sein. Den Task einfach über Run zu starten, ist eine Option, allerdings kann man dann nicht auf Eigenschaften des Events zugreifen, welches normalerweise das Ereignis auslöst. Microsoft liefert hier ein mir bisher unbekanntes Tools mit:

Eventcreate.exe - http://technet.microsoft.com/en-us/library/bb490899.aspx

So kann man recht einfach sein Event erzeugen und Tasks, die zum Beispiel Daten aus dem Event lesen, voll testen. Feine Sache.

Ciao Marco