2014-11-18 3 views
0

이것은 지금까지 결코 저에게 문제가되지 않은 개념입니다. VB.NET에서는 모든 응용 프로그램이 자동으로 app.config 파일을 생성합니다. 수년 동안 나는 그것을 무시했지만 최근에는 웹 서비스에 점점 더 많은 작업을해야하는 임무가 주어지면서 유용한 역할을 할 수있는 것처럼 보입니다. 이는 주로 바인딩 및 엔드 포인트의 구성과 관련이 있습니다. 나는이 모든 일을 과거 코드에서했지만 app.config를 사용하면 포트 번호 나 IP가 바뀌는 경우에 변경 사항을 적용하여 프로젝트를 다시 컴파일하는 대신 요소 데이터를 변경할 수 있으므로 유용하다고 생각합니다. (사실 저는 현재 이것을 위해 appsettings를 사용합니다. 그러나 당신은 아이디어를 얻습니다 - 저는보다 완벽한 해결책을 원합니다).내 응용 프로그램에서 app.config 파일을 인식하도록하려면 어떻게합니까?

내 문제는 내 응용 프로그램이 내 컴퓨터 이외의 컴퓨터에 응용 프로그램을 배포 할 때 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> 
+2

, 그것은 YourApplication.exe.config 호출 할 필요가있다. 응용 프로그램에서 리터럴'app.config'를 사용하려고합니까? 그렇다면 DLL의 경우 EXE를'assemblyname.exe.config'로, 어셈블리 파일명을'assemblyname.dll.config'로 변경해야합니다. Visual Studio에서는 일반적으로이 작업을 수행합니다. – TyCobb

+3

IIS를 사용하여 웹 서비스를 제공하는 경우 구성 파일의 이름을 Web.config로 지정해야합니다. – DeanOC

+0

@TyCobb 네, 그게 내가하려는 일입니다. 어셈블리 이름과 일치하도록 이름을 바꿔야한다는 생각이 전혀 들지 않았습니다. 내 IDE는 나를 위해 이름을 지정하지 않습니다 - 항상 'app.config'입니다. (만약 당신이 대답으로 올리면 upvote 할 수있을 것입니다.) –

답변

1

, 그것은 호출 할 필요가있다 (작동하지 않습니다) YourApplication.exe.config.

EXE 인 경우 assemblyname.exe.config 또는 DLL 인 경우 assemblyname.dll.config으로 이름을 바꿔야합니다. Visual Studio는 일반적으로 컴파일 할 때이 작업을 수행합니다. 원본 폴더에 여전히 app.config이지만 Debug & Release 폴더에서 이름을 변경해야합니다. 응용 프로그램이 실제로 빌드 할 때

You can see this mentioned here in the Application Configuration Files section.