WCF gehostet in IIS, Problem mit integrierten Sicherheit Datenbank verbinden
Frage
Ich habe einen WCF-Dienst gehostet in IIS 5.1 auf meinem Entwicklung XP-Rechner. Der Dienst kann nicht auf SQL Server DB mit integrierten Sicherheit = true verbinden. Der gleiche Service funktioniert gut, wenn in einer Konsolenanwendung gehostet. Ich habe nicht markiert den anonymen Zugriff und kontrolliert die integrierte Windows-Authentifizierung in IIS
Das ist meine Einstellung in Web.Config
<connectionStrings>
<add name="CADISEntities" connectionString="metadata=res://*/UDI.CADISEntities.csdl|res://*/UDI.CADISEntities.ssdl|res://*/UDI.CADISEntities.msl;provider=System.Data.SqlClient;provider connection string="Data Source=DBSQLP404;Initial Catalog=CadisCustom;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
Ich habe versucht, zu SSPI Integrierte Sicherheit zu ändern und Vertrauenswürdige Verbindung = Ja, aber kein Glück. Im Folgenden finden Sie die Config-Einstellungen.
<service behaviorConfiguration="CADISBehaviour" name="GlobalInvestors.FIPA.BLL.UDI.CADISSecurities">
<endpoint binding="basicHttpBinding" bindingConfiguration="CADISBinding"
contract="GlobalInvestors.FIPA.BLL.UDI.ICADISSecurities" />
</service>
<basicHttpBinding>
<binding name="CADISBinding" closeTimeout="01:30:00" openTimeout="01:30:00"
receiveTimeout="01:30:00" sendTimeout="01:30:00" maxBufferSize="65536000"
maxBufferPoolSize="52428800" maxReceivedMessageSize="65536000">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="Ntlm" />
</security>
</binding>
</basicHttpBinding>
und in Client
<endpoint address="http://ainaost4.amerus.corp.tld/FIPA/BLLHost/CADIS.svc"
behaviorConfiguration="Behavior" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ICADISSecurities" contract="CADISEntities.ICADISSecurities"
name="BasicHttpBinding_ICADISSecurities">
<!--<identity>
<userPrincipalName value="AINAOST4\ASPNET" />
</identity>-->
</endpoint>
<binding name="BasicHttpBinding_ICADISSecurities" closeTimeout="01:30:00"
openTimeout="01:30:00" receiveTimeout="01:30:00" sendTimeout="01:30:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="655360000" maxBufferPoolSize="655360000" maxReceivedMessageSize="655360000"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="Ntlm"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
Ohne Identitätswechsel in der Code-Einstellung erhalte ich " Der zugrunde liegende Anbieter schlug fehl auf Öffnen " in der Code-Identitätswechsel einstellen und ich " Kann nicht initialisieren SSPI "
[OperationBehavior(Impersonation = ImpersonationOption.Required)]
Versucht googeln und fand, dass Anwendungspool kann nicht in IIS 5.1 festgelegt werden.
Jeder Vorschlag, das Problem zu beheben wäre sehr geschätzt.
Lösung
das Problem behebt von qualifiziertem SQL Server-Namen in der Verbindungszeichenfolge geben