2009-08-05 3 views
2

.ASMX 웹 서비스에서 코드를 가져 와서 클래스 라이브러리 프로젝트로 변경하려고합니다. 내가하려고하면web.config를 사용할 수 없을 때 applicationSettings에 대한 참조를 해결하는 방법

int chunkSize = (int)Properties.Settings.Default.DownloadChunkSize; 

:이 값을 검색하는 데 사용하는

<applicationSettings> 
    <myService.Properties.Settings> 
     <setting name="DownloadChunkSize" serializeAs="String"> 
      <value>100000</value> 
     </setting> 

.. 그리고 FileService.asmx.cs 파일의 코드 : 웹 서비스 프로젝트와 web.config 파일을 가지고 .asmx 웹 서비스를 제거하기 위해이 코드를 다시 작성하면 더 이상 web.config를 사용할 수 없기 때문에 클래스 라이브러리 프로젝트에서 컴파일 시간 오류가 발생합니다. 지금까지 내가 한 일 (그리고 그 이유)에 대해 좀 더 설명하려고합니다 :

내 프로젝트를 단순화하기위한 동기입니다. 즉, 작동하는 .asmx 프로젝트가있는 Vstudio 솔루션이 있습니다. 몇 가지 방법이 있으며 공급 업체가 제공하는 다른 .asmx 웹 서비스와의 통신을 캡슐화합니다. 다음과 같이

내가 시도하고 새로운 디자인은 다음과 같습니다

프로젝트 1은 공급 업체의 웹 서비스에 대한 웹 참조 ProxyASMX라는 클래스 라이브러리 프로젝트입니다. 나는 여기에 코드를 제공하지 않았다. 공급 업체 웹 서비스를 가리키는 작은 app.config가 있습니다.

Project 2는 ProxyASMX.dll을 참조하는 클래스 라이브러리 프로젝트입니다. 이 FileService.cs 파일의 코드는 원래 웹 서비스와 동일하지만 [webmethod] 특성이 제거되었습니다. 컴파일에 문제가있는 프로젝트입니다.

Project 3은 2 개의 HTTPHandlers (Upload.ashx 및 Download.ashx)가있는 웹 응용 프로그램 프로젝트입니다. 이 프로젝트는 Project 2 클래스 라이브러리에 대한 참조를 갖습니다. 작은 기본 web.config 콘텐츠를 원래 솔루션의보다 포괄적 인 web.config 콘텐츠로 대체하려고 시도했지만 작동하지 않을 때이 벤처에 대한 전문가와 상담하는 것이 좋습니다.

나는 위의 스케치가 분명하기를 바랍니다. 나는 이것이 할 수 있어야한다고 생각하지만 지금은 그렇게 확신하지 못한다. 톰 홀랜더을 -

답변

5

클래스 라이브러리에 응용 프로그램 설정을 추가 할 수 있습니다. 그래서 "소비"프로젝트에 응용 프로그램 설정을 추가합니다. 그런 다음이 구성 섹션을 "프로젝트 스택 위로 복사"하면됩니다.

올바른지 이해한다면 Project 2에 DownloadChunkSize 설정을 추가하고이 섹션을 Project 3의 web.config에 복사해야합니다.당신은 사용하여 프로젝트 3 내에서이 설정에 액세스 할 수 있습니다

<applicationSettings> 
    <Project2.Properties.Settings> 
     <setting name="DownloadChunkSize" serializeAs="String"> 
      <value>100000</value> 
     </setting> 

:이 뭔가처럼 될 것

Project2.Properties.Settings.Default.DownloadChunckSize 

그리고 프로젝트 2

:

Properties.Settings.Default.DownloadChunckSize 
+0

당신이 DownloadChunkSize가 설정 추가 "쓰기 프로젝트 2 ", app.config 또는 web.config 파일 (또는 다른 것)을 의미합니까? –

+0

프로젝트 속성> 설정 탭/양식 사용 – veggerby

+0

매우 좋습니다. 나는 당신이 의미하는 것을 지금 본다. 이 클래스 라이브러리 프로젝트에서 app.config를 제거 했으므로 이제 Properties 폴더 아래에 Settings.settings 파일이 있습니다. 고맙습니다. –

0

나는 당신이 ExeConfigurationFileMap를 작성하고 프로젝트 1에서의 App.config에서 값을 검색하는 데 사용하는 물건 이런 종류의 엔터프라이즈 라이브러리에서 좋은 도우미가있어

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); 

     fileMap.ExeConfigFilename = @"ConfigTest.exe.config"; // relative path names possible 

     // Open another config file 

     Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 



     // read/write from it as usual 

     ConfigurationSection mySection = config.GetSection("mySection"); 

     config.SectionGroups.Clear(); // make changes to it 

     config.Save(ConfigurationSaveMode.Full); // Save changes 

필요가 있다고 생각 좋은 일을했습니다 writeup

0

가능한 경우 라이브러리의 설정 파일을 사용하지 않는 경향이 있습니다. 라이브러리에서 노출하는 클래스의 속성으로 만들고 응용 프로그램에서 설정이 저장되는 방법과 위치를 결정하도록합니다.

라이브러리를 다시 사용하는 응용 프로그램이 여러 개인 경우 라이브러리 수준의 구성 파일 (예 : NLog)을 고려할 가능성이 큽니다. 하지만 대부분의 경우 응용 프로그램에서 설정하는 것이 더 적합합니다.

관련 문제