【发布时间】:2014-07-23 14:50:07
【问题描述】:
我正在尝试交换配置文件进出我的 web api 以与不同的 WCF web 服务进行交互。我在以下链接中找到了在运行时更改我的 webconfig 文件的解决方案。
当从命令行应用程序调用替换我的新配置文件时,这很有效,但是当我从我的 API 调用配置文件更改器时,我得到以下错误。
“在 ServiceModel 客户端配置部分中找不到引用合约‘OldDominionWebServices.RateDelegate’的默认端点元素。这可能是因为找不到您的应用程序的配置文件,或者因为找不到与此合约匹配的端点元素客户端元素。”
这是我试图引用的端点
<endpoint address="https://www.odfl.com:443/wsRate_v4/RateService" binding="basicHttpBinding" bindingConfiguration="RatePortBinding" contract="OldDominionWebServices.RateDelegate" name="OldDominionWebServices" />
我知道错误的含义,但不确定为什么会在交换了配置文件的 Web api 中抛出此错误,但在使用执行相同操作的控制台应用程序时不会抛出此错误。在命令行应用程序的情况下,使用此 Web 服务的程序集被引用为解决方案的一部分,其中与 api 一样,程序集是通过反射加载的。我已经看到一些建议,我需要在端点的合同中使用完全限定域名,但这仍然会导致相同的错误。
我希望这是我忽略的一些简单的事情,在此先感谢!
【问题讨论】:
-
所以你想从你的 Web API 代码中交换配置文件?
-
没错,在程序集调用期间,配置文件被替换为程序集特定的配置文件
-
会不会是您使用的是新配置的相对路径,在交换时找不到?
-
其实是绝对路径。问题似乎是配置文件实际上并没有被换出。我可以将端点放入 API 的 web 配置文件中,它可以工作,问题是我想避免这种情况,因为系统有大约 400 个不同的端点可以使用
-
你试过调试吗? AppDomain.CurrentDomain.GetData("APP_CONFIG_FILE") 显示什么?
标签: web-services wcf asp.net-web-api config