J'ai un service WCF que j'ai besoin d'appeler. Quand je vais à « ajouter une référence de service » dans VS, je me suivais config client:Comment désactiver la sécurité sur le CustomBinding d'un WCF via le code?
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="CustomBinding_IMyService">
<binaryMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
maxSessionSize="2048">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binaryMessageEncoding>
<httpTransport manualAddressing="false" maxBufferPoolSize="524288"
maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
bypassProxyOnLocal="false" decompressionEnabled="true"
hostNameComparisonMode="StrongWildcard"
keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://myserver/Service/MyService.svc"
binding="customBinding" bindingConfiguration="CustomBinding_IMyService"
contract="MyService.IMyService" name="CustomBinding_IMyService" />
</client>
</system.serviceModel>
</configuration>
Quand j'appelle le service à l'aide de cette configuration, il fonctionne, de sorte que le service est bien. Mais dans mon application actuelle, je ne peux pas utiliser app.config, et j'ai besoin de construire le client de service en code. J'ai essayé de faire une traduction simple:
var binaryMessageEncoding = new BinaryMessageEncodingBindingElement();
var httpTransport = new HttpsTransportBindingElement()
{
Realm = "", ManualAddressing = false,
HostNameComparisonMode = HostNameComparisonMode.StrongWildcard,
TransferMode = TransferMode.Buffered,
MaxBufferSize = int.MaxValue,
MaxReceivedMessageSize = int.MaxValue, AllowCookies = false,
AuthenticationScheme = AuthenticationSchemes.Anonymous,
UnsafeConnectionNtlmAuthentication = false
};
var customBinding = new CustomBinding(binaryMessageEncoding, httpTransport);
var myServiceClient = new MyServiceClient(customBinding,
new EndpointAddress(
"http://myserver/Service/MyService.svc"));
Mais quand je l'appelle le service, je reçois ArgumentException
qui dit "The provided URI scheme 'http' is invalid; expected 'https'."
, de sorte que le je contraignant construit pour une raison quelconque pense qu'il doit être sûr ... Donc, maintenant nous sont de retour à la question d'origine - comment désactiver la sécurité sur un code CustomBinding
? Je sais que dans la configuration c'est un simple <security mode="none"/>
, mais je ne peux pas utiliser la config, et pour une raison quelconque, je n'ai pas pu trouver l'API équivalente.
Merci! (Comment pourrais-je me manquer moi-même? ... Jeez.) – user8032