J'essaie de consommer un service WCF dans le contexte d'un complément. Excel Excel. J'utilise l'API C d'Excel exposée à .NET par la bibliothèque ExcelDNA. Le code de fonction est défini comme suit:ExcelDNA: Comment rendre un fichier de configuration WCF disponible pour mon Excel AddIn?
[ExcelFunction(Description = "Getting the WCF stack trace")]
public static string GetWCFStackTrace(string name)
{
try
{
HTTPService.ExcelServiceClient client = new HTTPService.ExcelServiceClient("BasicHttpBinding_IExcelService");
client.LogExcelRows("Hello World");
}
catch (Exception e)
{
Debug.WriteLine(e);
}
return "function complete";
}
Ce qui entraîne la trace de la pile comme indiqué ci-dessous. J'ai testé que dans le contexte d'exécution de l'Add-In, j'ai accès à la classe proxy comme généré par la référence de service (c'est-à-dire typeof(HTTPService.ExcelServiceClient)
renvoie correctement pendant l'exécution).
Exception thrown: 'System.InvalidOperationException' in System.ServiceModel.dll
System.InvalidOperationException: Could not find endpoint element with name 'BasicHttpBinding_IExcelService' and contract 'HTTPService.IExcelService' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this name could be found in the client element.
at System.ServiceModel.Description.ConfigLoader.LoadChannelBehaviors(ServiceEndpoint serviceEndpoint, String configurationName)
at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName, Configuration configuration)
at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName)
at System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address)
at System.ServiceModel.ChannelFactory`1..ctor(String endpointConfigurationName, EndpointAddress remoteAddress)
at System.ServiceModel.ConfigurationEndpointTrait`1.CreateSimplexFactory()
at System.ServiceModel.ConfigurationEndpointTrait`1.CreateChannelFactory()
at System.ServiceModel.ClientBase`1.CreateChannelFactoryRef(EndpointTrait`1 endpointTrait)
at System.ServiceModel.ClientBase`1.InitializeChannelFactoryRef()
at System.ServiceModel.ClientBase`1..ctor(String endpointConfigurationName)
at ExcelDNATest.HTTPService.ExcelServiceClient..ctor(String endpointConfigurationName) in C:\Users\zach\Documents\Visual Studio 2015\Projects\ExcelDNATest\ExcelDNATest\Service References\HTTPService\Reference.cs:line 37
at ExcelDNATest.TestFunctions.HelloDna(String name) in C:\Users\zach\Documents\Visual Studio 2015\Projects\ExcelDNATest\ExcelDNATest\TestFunction.cs:line 163
Comment puis-je inclure la configuration des terminaux dans le code compilé ExcelDNA?
=== EDIT
La réponse est ci-dessous