这个概念直到现在才真正成为我的问题。在VB.NET中,每个应用程序都会自动生成app.config文件。多年来我一直忽视它们,但最近,随着我的任务是开展越来越多的Web服务工作,他们似乎能够发挥有用的作用。这主要是绑定和端点的配置。我以前在代码中完成了所有这些操作,但我认为使用app.config会很有用,这样在端口号或IP更改的情况下我可以更改元素数据而不是使用更改重新编译项目(我实际上目前正在使用appsettings,但你明白了 - 我想要一个更完整的解决方案)。
所以,我的问题是,当应用程序部署在我自己以外的计算机上时,我的应用程序似乎无法识别app.config文件。目前我得到了可怕的'找不到引用合同blahblah的默认端点元素',这似乎表明我的端点信息没有被读取。如果我在代码中执行相同的操作,它可以正常工作。
除了编译之外,我还需要做些什么才能从app.config获取绑定/端点等以应用?
代码示例(可行):
Dim epa As New EndpointAddress("https://www.mysite.com/devserviceloc/test1.svc")
Dim binding As New BasicHttpBinding
binding.Name = "secureHttpBinding"
binding.Security.Mode = BasicHttpSecurityMode.Transport
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None
binding.Security.Transport.Realm = ""
Dim test As New TestingService1.test1Client(binding, epa)
等效的App.config(不起作用)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<requiredRuntime version="v4.0.20506"/>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="secureHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
</security >
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://www.mysite.com/devserviceloc/test1.svc" binding="basicHttpBinding"
bindingConfiguration="secureHttpBinding" contract="TestingService1.Itest1"
name="BasicHttpBinding_Itest1" />
</client>
</system.serviceModel>
<system.windows.forms jitDebugging="true" />
</configuration>
答案 0 :(得分:1)
实际构建应用程序时,需要将其称为YourApplication.exe.config
。
如果是EXE,则需要将其重命名为assemblyname.exe.config
,如果是DLL,则需要将其重命名为assemblyname.dll.config
。 Visual Studio通常在编译时为您执行此操作。它在源文件夹中仍为app.config
,但应在Debug&amp; amp;中重命名。发布文件夹。
You can see this mentioned here in the Application Configuration Files section.