Excel加载项未加载带有服务引用配置信息的app.config

时间:2012-11-02 16:35:04

标签: c# web-services excel-dna

我编写了一个带有服务参考的应用程序,可以对特定的URL进行Web服务调用,效果很好。我想将此代码移动到Excel加载项中,但我遇到了这个问题:

  

未处理的异常消息:找不到名为“ConnectivityHttpsSoap12Endpoint”的端点元素,并在ServiceModel客户端配置部分中收缩“Connectivity.ConnectivityPortType”。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素。

问题是我的app.config(没有服务参考信息)没有被加载,因为Excel正在调用我的类库,并且调用应用程序的app.config需要添加服务引用它。但这可以用Excel完成吗?更好的是,有没有办法从代码加载我的app.config?

3 个答案:

答案 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.xlladdin-packed.xlladdin64.xlladdin64-packed.xll,其中项目程序集名为addin

要拾取配置文件,它需要与用于外接程序的文件名匹配。例如。 addin-packed.xll.config(如果使用addin-packed.xll作为已注册的Excel加载项。