Création d'un module complémentaire Autodesk Revit. Je souhaite qu'il soit en mesure de parler aux services Web SOAPRevit Addin Visual Studio Appel du service Web SOAP
L'addin est créé en tant que bibliothèque de classes. Le code client SOAP est généré à l'aide de Visual Studio Service Reference et pointant vers l'URL wsdl.
Quand je lance le Addin de Revit je reçois l'erreur suivante
Revit a rencontré un System.InvalidOperationException: Impossible de trouver l'élément point final avec le nom « {xxx} » et contrat « {yyy} » dans le client ServiceModel section de configuration.
Notez que les appels SOAP fonctionnent correctement si je crée le projet Visual Studio en tant que projet de ligne de commande et l'exécutez directement.
Remarque2 le dossier de construction que je désigne dans le manifeste addin contient un fichier .config.
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
<AddIn Type="Command">
<Name>AIMRevitTestTwo</Name>
<Assembly>
C:\Users\greg.bluntzer\Documents\Visual Studio 2015\Projects\AIMRevitTestTwo\AIMRevitTestTwo\bin\Debug\AIMRevitTestTwo.dll
</Assembly>
<AddInId>604b1052-f742-4951-8576-c261d1993109</AddInId>
<FullClassName>App</FullClassName>
<VendorId>xxx</VendorId>
<VendorDescription>yyy</VendorDescription>
Y at-il autre chose que je dois configurer dans mon projet Visual Studio ou Manifest Revit afin qu'il se penchera sur le fichier .config.
Mise à jour: J'ai trouvé ce link Cela dit pour essayer de créer/mettre à jour le fichier revit.exe.config et ajouter les liaisons à cela. Il résout mon problème localement. Ce n'est pas une bonne solution pour moi car je veux distribuer cet addin. Donc je voudrais toujours savoir comment créer l'addin afin qu'il puisse lire le fichier de configuration fourni avec la bibliothèque de classes.
SOLUTION: comme le suggère je construis les informations de configuration dans le code
<binding name="findAePReqEByDocumentSoapBinding" allowCookies="true">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" proxyCredentialType="Basic" realm="fmax" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
Active en
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.AllowCookies = true;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic;
binding.Security.Transport.Realm = "fmax";
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
binding.Security.Message.AlgorithmSuite = SecurityAlgorithmSuite.Default;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.MaxBufferSize = int.MaxValue;
EndpointAddress endPointAddress = new EndpointAddress(DataAccess.END_POINT);
Ca l'a fait merci –