我编写了一个带有服务参考的应用程序,可以对特定的URL进行Web服务调用,效果很好。我想将此代码移动到Excel加载项中,但我遇到了这个问题:
未处理的异常消息:找不到名为“ConnectivityHttpsSoap12Endpoint”的端点元素,并在ServiceModel客户端配置部分中收缩“Connectivity.ConnectivityPortType”。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素。
问题是我的app.config(没有服务参考信息)没有被加载,因为Excel正在调用我的类库,并且调用应用程序的app.config需要添加服务引用它。但这可以用Excel完成吗?更好的是,有没有办法从代码加载我的app.config?
答案 0 :(得分:2)
您需要使用ConfigurationManager
打开它。您可以在调用程序集路径中找到您的app.config文件(通常),这样您就可以编写如下方法:
public static Configuration LoadLocalConfigurationFile(string fileName)
{
// fileName is the configuration file you want to open
var configMap = new ExeConfigurationFileMap
{
ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName)
};
return ConfigurationManager.OpenMappedExeConfiguration(
configMap, ConfigurationUserLevel.None);
}
答案 1 :(得分:1)
我最近遇到了同样的问题,并发现最佳解决方案包含在:
Change default app.config at runtime
将配置文件指向:
AppDomain.CurrentDomain.BaseDirectory + "AssemblyName.dll.config"
其中AssemblyName是您的插件程序集的名称
答案 2 :(得分:0)
正如@hexboy在评论中指出的那样,答案是ExcelDNA要求配置文件与“ xll”文件具有相同的名称,但扩展名为“ .config”。然后,ExcelDNA将自动加载配置,不需要其他代码。
还请注意,ExcelDNA在生成时会生成各种不同的文件。例如。 addin.xll
,addin-packed.xll
,addin64.xll
,addin64-packed.xll
,其中项目程序集名为addin
。
要拾取配置文件,它需要与用于外接程序的文件名匹配。例如。 addin-packed.xll.config
(如果使用addin-packed.xll
作为已注册的Excel加载项。