Asp의 Web.config 설정에 액세스합니다.NetCore 앱?
저는 asp.net core가 상당히 유연한 새로운 구성 시스템을 가지고 있다는 것을 알고 있으며, 그것은 훌륭합니다.하지만 .net 4.x의 web.config 기반 구성 시스템에 대해 마음에 드는 점이 있습니다.예를 들어 xml 파일이므로 web.config 파일에 주석을 넣을 수 있습니다.그리고 저에게는 빛나는 새로운 json 접근법을 따르기보다는 xml을 고수할 가치가 있습니다.[업데이트:json 접근 방식도 파일의 주석을 지원한다는 것을 이제 이해했습니다.]
그래서, 만약 내가 아스팔트를 가지고 있다면. 기반의 웹을 할 수 할 것 .System.Configuration.ConfigurationManager.AppSettings[key]
설정에 접근합니다.
하지만 시도하면 값이 항상 null로 반환됩니다(적어도 VS2015를 사용하는 IIS Express의 경우).
잘 될 거예요?제가 간과하고 있는 것에 대한 생각이 있으십니까?
Web.config
<configuration>
<appSettings>
<add key="SomeSetting" value="true"/>
</appSettings>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>
설정에 액세스할 코드:
string key = "SomeSetting";
string setting = ConfigurationManager.AppSettings[key];
if (setting == null)
throw new Exception("The required configuration key " + key + " is missing. ");
UPDATE
더 많은 연구를 한 후에 저는 왜 그것이 작동하지 않는지 이해했지만, 저는 여전히 그것을 고칠 방법을 찾지 못했습니다.근본 원인은 구성 관리자가 web.config가 아닌 다른 파일에서 구성 정보를 찾고 있기 때문인 것 같습니다.
은 이은보알수있다습니를 알 수.AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
소물유. 저 에는 저경우를 가리키는 에 가리키대신에는그를의대에신는▁my가▁to키▁the.website_folder\web.config
대신에 그것은 가리키고 있습니다.website_folder\bin\Debug\net461\win7-x64\wwwGiftOasisResponsive.exe.Config
여기서 website_folder는 내 웹 사이트를 포함하는 폴더의 경로입니다.
문서와 지식인들은 다음과 같이 말합니다.AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
설정 가능한 속성이지만 설정해도 값이 변경되지 않습니다.이상해요.
문제가 무엇인지는 알 수 있지만 해결 방법을 찾을 수 없습니다.
해결책을 찾았어요그것을 알아내는 열쇠는 그것을 깨닫는 것이었습니다.AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
속성이 web.config 파일을 가리키는 것이 아니라 웹 사이트를 실행하는 실행 파일의 exe.config 파일을 가리키는 것이었습니다.에서 웹 exe가 .netcore 아래에서 웹 사이트는 자체 프로세스로 실행되며 자체 exe가 있습니다.
구성 모델은 다음과 같습니다.Net 4.x는 4.x 웹 응용 프로그램이라기보다는 데스크톱 응용 프로그램과 비슷합니다.즉, 웹.config가 아닌 exe.config를 보고 있다는 것입니다.
그리고 나는 그 아스프를 알아차렸습니다.NetCore Web Project(전체 프레임워크 사용)에는 데스크톱 앱처럼 app.config 파일이 포함되어 있습니다..net 4.x 응용 프로그램 구성 설정을 해당 파일에 넣으면 exe가 생성될 때 디버그용이든 릴리스용이든 exe.config 파일에 배치됩니다.예를 들어 Winforms 앱에서 작동하는 것과 똑같이 말입니다.
따라서 전체 프레임워크를 대상으로 하는 asp.net 코어 웹 응용 프로그램에서 Configuration Manager를 활용하는 방법은 응용 프로그램 설정을 web.config 파일이 아닌 app.config 파일에 넣는 것입니다.구성 관리자는 문제가 없음을 알게 됩니다.
이것은 많은 것을 설명하지만 실제로 web.config에 이러한 설정을 넣고 Configuration Manager를 통해 액세스할 수 있는 기능을 제공하지는 않습니다.하지만 저는 asp.net 코어 웹 애플리케이션이 전체 프레임워크를 대상으로 한다고 하더라도 그것이 불가능하다고 믿기 시작했습니다.
asp.net core 1.1 응용 프로그램을 IIS에 게시하기 시작할 때 이 문제가 발생했습니다.
IIS에 생성된 web.config 파일이 있으며 이 파일은 게시 시 다시 작성됩니다.Windows 인증을 사용하려면 web.config를 프로젝트에 수동으로 추가해야 했습니다.이 항목은 IIS에 올바르게 게시됩니다.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\yourproject.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</configuration>
저도 이 문제에 부딪혔습니다.조사하고 읽은 후에는 web.config를 수동으로 추가할 수 있지만 이는 IIS에 대한 설정(예: 인증, ...)을 제공하기 위한 것입니다.
앱 설정 또는 사용자 지정 설정의 경우 appsettings.json 파일과 의 새 구성으로 작업해야 합니다.Net Core.
언급URL : https://stackoverflow.com/questions/40186445/access-web-config-settings-in-asp-net-core-app
'programing' 카테고리의 다른 글
JavaScript/jQuery에서 쿼리 문자열로 개체 직렬화 (0) | 2023.08.24 |
---|---|
@angular/core/core에서 Ng serve throwing @에 내보낸 멤버 'eFactoryDef'이 없습니다. (0) | 2023.08.24 |
MariaDB: 새 레코드 쓰기를 조건부로 중단하는 삽입 전 트리거 (0) | 2023.08.24 |
세션의 기본 수명은 얼마입니까? (0) | 2023.08.24 |
도커 컨테이너 노드의 maridia db galera 클러스터 문제 (0) | 2023.08.19 |