ich einen WCF-Dienst habe ich in einem WebApplication mit folgenden Konfiguration in web.config erstellt habeErster DefaultNetworkCredentials zu WCF-Dienst, um durch
<service name="RedwebServerManager.WebApplication.DesktopService"
behaviorConfiguration="ServBehave">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="basicBind"
contract="RedwebServerManager.WebApplication.IDesktopService"/>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="basicBind">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
Dieser Dienst in in WindowsCredentials nehmen muss Informationen in einem bekommen Datenbank basierend auf dem authentifizierten Benutzer. Dieser Service Strom hat eine Methode, um eine Schnittstelle mit der folgenden Signatur
[ServiceContract]
public interface IDesktopService
{
/// <summary>
/// Gets the clients.
/// </summary>
/// <returns>IEnumerable<ClientServiceModel>.</returns>
[OperationContract]
IEnumerable<ClientServiceModel> GetClients();
}
Implementierung habe ich eine Windows Forms-Anwendung, die den WCF-Dienst verbraucht und ich mag durch die Anmeldeinformationen des aktuellen Benutzers zu übergeben mit der Anwendung als dieser Wille alle sitzen auf unserer Domäne. Die app.config ist als
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IDesktopService">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows" proxyCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://redwebservermanager.redweb.network/DesktopService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDesktopService"
contract="ManagerService.IDesktopService" name="BasicHttpBinding_IDesktopService" />
</client>
</system.serviceModel>
folgt Wenn ich manuell an die Anmeldeinformationen Benutzernamen und Passwort funktioniert alles richtig aber ich
managerService.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials
so, dass ich die aktuellen Benutzer-Anmeldeinformationen über, aber ich passieren kann versucht haben, Beim Aufruf von GetClients() bleibt ein Fehler erhalten, dass Benutzername und Passwort nicht gesetzt sind.
Kann mir jemand helfen? Ich habe auch versucht,
zu der Methode hinzuzufügen, aber das machte keinen Unterschied.
Ich weiß, es klingt albern, aber haben Sie versucht ** nicht ** ClientCredential 'überhaupt einstellen. Wir verwenden 'NetTcpBinding' mit Transportsicherheit und das obige funktioniert für uns. –