구성 관리자.앱 설정이 null이 됩니까?
나는 'web.config를 별도의 클래스 라이브러리에 가지고 있고'가 다른 웹 애플리케이션에서 web.config 앱 설정을 읽고 있다는 것을 깨닫지 못했습니다.
VS2010 타겟 프레임워크 3.5를 사용하고 있습니다.
여기서 뭐가 문제인지는 모르겠지만 저는 이해하고 있습니다.null내가 얻으려고 할 때ConfigurationManager.AppSettings["StoreId"];
private string _storeid = GetStoreId;
public static string GetStoreId
{
get
{
return ConfigurationManager.AppSettings["StoreId"];
}
}
web.config:
<appSettings>
<add key="StoreId" value="123" />
</appSettings>
유닛 테스트를 수행하는 경우 앱 사본이 필요합니다.유닛 테스트 프로젝트 내부 구성
갱신하다
구성을 복사하는 AfterTargets를 CsProj 파일에 둘 수 있습니다.
<Target Name="CopyAppConfig" AfterTargets="Build" DependsOnTargets="Build">
<CreateItem Include="$(OutputPath)$(AssemblyName).dll.config">
<Output TaskParameter="Include" ItemName="FilesToCopy"/>
</CreateItem>
<Copy SourceFiles="@(FilesToCopy)" DestinationFiles="$(OutputPath)testhost.dll.config" />
</Target>
문제
일반적인 원인은 상황에 따른 것입니다.
원인
두 개의 프로젝트가 있는 솔루션이 있을 때,App/Web.Config실행 중인 응용 프로그램의 컨텍스트가 라이브러리, 유닛 테스트 등과 같은 두 번째 프로젝트인 경우에는 기본 프로젝트에서 작동하지 않습니다.
수수께끼
(with 프다트사구값읽방을는법서성에의용른)System.Configuration 가 있는 . 실행 컨텍스트가 있는 프로젝트로 구성 파일을 이동/복사해야 합니다.불행히도 파일을 복제하면 OOP, 소스 코드 관리, SOLID 등의 좋은 프로그래밍 테넌트가 실패합니다.
쿨 솔루션
Anify 솔루션은 구성 파일 바로 가기를 다른 프로젝트에 추가하여 하나의 파일만 업데이트합니다.
의 내용을 나누면 좋을 것 같습니다.config여러 프로젝트에 걸쳐 있는 파일.정답 2번: https://stackoverflow.com/a/15319582/495455 처럼 우아하게 어셈블리 파일을 공유하지만 상황에 따라 다릅니다.
고지 사항 ;) 이 게시물은 너무 늦었기 때문에 OP에 답변하기 위한 것이 아니지만, 확실히 이 페이지에 도달하는 독자들에게 도움이 될 것입니다.
직면한 문제:ConfigurationManager.AppSettings["uName"]nullC# 웹 API 프로젝트에서.
내가 확인한 기본 사항:
코드로ConfigurationManager.AppSettings["uName"]나는 정확한 키를 사용하고 있었습니다.uName전에 그랬던 것처럼web.config 데이터베이스,
예
<appSettings>
<add key="uName" value="myValue" />
</appSettings>
다음으로 잘못 입력하지 않았는지 확인했습니다.userName에 uName
웹 API 프로젝트이기 때문에 다음과 같은 파일을 가지고 있을 것입니다.web.config에 app.config프로젝트의 루트 폴더에도 있습니다.[이미지 참조].
솔루션:
내게 효과가 있었던 해결책은
변경되었다. ConfigurationManager.AppSettings["uName"]WebConfigurationManager.AppSettings["uName"]
그리고.
내가 가지고 있는 것을 확인했습니다.
<appSettings>
<add key="uName" value="myValue" />
</appSettings>
정확한 서류철에.
오른쪽 파일이 View 폴더에 web.config가 아님
debug나 release web.config 둘 다.
그리고:
<appSettings>
<add key="StoreId" value="123" />
</appSettings>
는 에위니다합에 해 있습니다.web.configASP 파일입니다. NET에 NET 프로그램app.configVisual Studio의 클래스 라이브러리 프로젝트에 추가한 파일입니다.당은그을삶의를 받을 수 없습니다.null이 경우에는이것을 에 추가한 경우app.configVisual Studio의 클래스 라이브러리 프로젝트에서 null을 얻는 것은 완전히 정상적인 동작입니다.
방금 DLL이 생성된 프로젝트가 아닌 다른 프로젝트에서 호출되었다는 답변을 받았습니다.따라서 App.config의 항목은 호출 프로젝트 구성 파일로 이동해야 합니다.
예를 들어 제 솔루션에는 2개의 프로젝트가 있습니다. 하나의 클래스 라이브러리와 다른 콘솔 응용 프로그램.i는 콘솔 응용 프로그램에 클래스 라이브러리 참조를 추가했습니다.그래서 클래스 라이브러리에 app.config 파일을 추가하면 콘솔 응용 프로그램에 app.config를 추가할 때 null exception.it 을 통해 프로젝트합니다.효과가 있기를 바랍니다.
앱 설정이 구성 관리자에 로드됩니다.AppSettings, 그러나 사용자 설정(프로젝트 속성의 Properties 설정)은 그렇지 않습니다.
Visual Studio에서 구성 파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택한 다음 "출력 디렉터리에 복사"를 "항상 복사" 또는 "새로 복사"로 변경합니다.
또는 다음 섹션을 .csproj 파일의 요소 하위로 수동으로 추가합니다(이 섹션은 "App.config" 파일의 "Copy always"용입니다).
<ItemGroup>
<None Update="App.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
저는 이 모든 해결책을 시도해 보았지만 효과가 없었습니다.'web.config' 파일을 사용하려고 했습니다.모든 이름이 정확하게 지정되었고 파일이 올바른 위치에 있었지만 작동을 거부했습니다.그런 다음 'web.config' 파일의 이름을 'app.config'로 바꾸기로 결정했고 그렇게 작동했습니다.
따라서 'web.config' 파일에 이 문제가 있는 경우 파일 이름을 'app.config'로 변경해야 합니다.
클래스 라이브러리(.dll)를 테스트할 때 이 문제가 발생했습니다.둘 다 같은 프로젝트에 있었지만 라이브러리의 App.config에 필요한 설정이 있었습니다.테스트하기 위해 작성한 앱이 라이브러리를 실행하고 있어서 설정이 필요했습니다.
파일 탐색기에서 프로젝트를 복사하고 프로젝트 이름을 변경할 때 이 문제가 발생했습니다.이것은 Debug 폴더를 복사했고 'Copy if newer'로 설정하지 않았기 때문에 이전 App.config 파일을 덮어쓰지 않았습니다.
디버그 폴더를 삭제하고 다시 만들기만 하면 됩니다.누군가에게 도움이 되길 바랍니다.
위 답변에 동의하며 몇 가지 추가 사항을 추가하고 싶습니다.
앞과 뒤에 공백을 두지 않아야 합니다. 아래 코드를 참조하십시오.
private static string Client_ID = ConfigurationManager.AppSettings["ida:ClientId"];ida: ClientId 사이에 공백을 두면 작동하지 않고 null을 반환합니다.
키 값 이름이 올바른지 확인합니다.
웹 구성 관리자를 사용해 볼 수 있습니다.
방금 다른 프로젝트에서 호출했을 때만 발생했습니다.다른 프로젝트에서는 참조가 서비스 참조가 아니라 연결된 서비스로 정의된 것으로 보입니다.저는 참조를 삭제하고 다시 추가했습니다.
string setting = ConfigurationManager.AppSettings["Setting"];
- 구성 파일이 해당 파일을 참조하는 코드와 동일한 폴더에 있는지 확인합니다.그렇지 않은 경우 도우미 클래스를 만듭니다.이를 복제하면 두 곳에 존재한다는 사실을 잊어버릴 경우 혼란이 발생할 수 있습니다.
- 앱 설정을 앱 설정에 대한 web.config가 아닌 app.config에 유지합니다.web.config 키에 이 문제가 있었습니다.
언급URL : https://stackoverflow.com/questions/4280970/configurationmanager-appsettings-getting-null
'programing' 카테고리의 다른 글
| 리플릿 - 기존 마커를 찾고 마커를 삭제하는 방법은 무엇입니까? (0) | 2023.08.16 |
|---|---|
| 각도 및 마이크로 프론트 엔드 (0) | 2023.08.11 |
| jquery를 사용하여 div에서 스타일 속성 추가 및 제거 (0) | 2023.08.11 |
| Excel VBA를 사용하여 코드 128 바코드 생성 (0) | 2023.08.11 |
| 스위치 문의 사례 순서가 성능에 영향을 미칩니까? (0) | 2023.08.11 |


