Heute hatte ich in einem Kundenprojekt einen merkwürdigen Fehler beim Bereitstellen einer Visual Studio LightSwitch 2012 Anwendung auf einem Internet Information Server. Das Bereitstellen einer LightSwitch Anwendung kann ja immer zu ein paar Problemen führen, interessant heute war aber, dass auf dem Server bereits eine LightSwitch Anwendung lieft und somit die Umgebung eigentlich richtig eingerichtet war. Der Fehler war auch relativ nichtssagend, im Prinzip hieß er
Load operation failed for query „GetAuthenticationInfo“. The remote server returned an error: Not Found.
Nach sehr verzweifelter Suche bin ich dann schließlich auf diesen Artikel gestoßen. Das Problem ist Folgendes: Auf meinem Client-Computer habe ich irgendwann einmal neben Visual Studio 2012 (unter dem das Projekt erstellt wurde) Visual Studio 2013 installiert. Das führt aber dazu, dass beim Compilieren die falschen DLLs für OData an das Projekt gebunden werden, die wiederum nicht kompatibel sind. Die Lösung für das Problem ist die, dass man die Server.csproj Datei so anpasst, dass man Visual Studio Hints gibt welche DLLs zu verwenden sind.
<Reference Include="Microsoft.Data.Edm"> <HintPath>C:\Program Files (x86)\Microsoft WCF Data Services\5.0\bin\.NETFramework\Microsoft.Data.Edm.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="Microsoft.Data.OData"> <HintPath>C:\Program Files (x86)\Microsoft WCF Data Services\5.0\bin\.NETFramework\Microsoft.Data.OData.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="Microsoft.Data.Services"> <HintPath>C:\Program Files (x86)\Microsoft WCF Data Services\5.0\bin\.NETFramework\Microsoft.Data.Services.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="Microsoft.Data.Services.Client"> <HintPath>C:\Program Files (x86)\Microsoft WCF Data Services\5.0\bin\.NETFramework\Microsoft.Data.Services.Client.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="System.Spatial"> <HintPath>C:\Program Files (x86)\Microsoft WCF Data Services\5.0\bin\.NETFramework\System.Spatial.dll</HintPath> <Private>True</Private> </Reference>
Kaum hat man das getan schon läuft das Deployment wieder. Da muss man erstmal drauf kommen.