내가 IIS에서 호스팅되는 다음과 같은 파일 레이아웃과 SOAP 서비스를 만들 수 WCF를 사용하고 다음 /web.config에서WCF에서 상속 된 web.config 파일과 HttpContext 버그?
/
/web.config
/service
/service/test.svc
/service/web.config
을, 나는 몇 가지 일반 설정 (system.codedom, 등)에이 /service/web.config 몇 가지 설정이 정의 된 appSettings 섹션이 있습니다. 이 이상한 얻는 곳
public class CustomUserNameValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
string expectedUsername = WebConfigurationManager.AppSettings["Username"];
string expectedPassword = WebConfigurationManager.AppSettings["Password"];
... snip ...
}
}
이는 다음과 같습니다 :
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="Username" value="user" />
<add key="Password" value="password" />
</appSettings>
나는 다음 사용자 암호 검증이이 서비스에
- 첫 번째 히트에서 expectedUserName 및 expectedPassword가 null 인을
- 두 번째 및 후속 히트에서는이 두 변수에 /service/web.config 파일의 값이 포함됩니다. 두 번째 또는 후속 히트에 도착하고 실제로 웹 서버의 간단한 다시 시작 예상대로 작동하거나 중단됩니다 컴파일하는 경우
- 다음 무엇을 실제로하고있는 것은로드입니다,
사실 명중 appSettings 섹션을 첫 번째 히트의 /web.config에서 삭제 한 다음 WCF가 WSDL/XSD 등의 생성을 캐싱 한 후에 /service/web.config를 사용합니다.
이것은 버그처럼 보이고 appSettings를 /web.config 파일에 배치하는 것 이외의 해결 방법을 찾지 못하는 것 같습니다.
test.svc가 컴파일되지 않았거나 (또는 캐싱이 무엇이든간에) 아직 첫 번째 히트에서/service 디렉토리를 실행의 루트로 간주하지 않는 WCF일까요? 그런 다음 첫 번째 히트를 수행 한 후 web.config 상속에서 해당 디렉토리를 고려합니까?
업데이트 : 아래의 설명에 따라 HttpContext.Current도 첫 번째 히트에서만 null이지만 그 이후의 모든 히트는 null이 아닙니다 (서비스의 적절한 web.config 및 특성과 함께) ASP.NET 호환 모드 허용). 제대로로드되지 않는 web.config는 더 큰 문제의 증상 일뿐입니다.
이것은 또한 ConfigurationManager가 함께 발생, .NET 4.0 베타 2에서 수정되었습니다된다. – wojo
이상하게 변하고 있습니다. 내가 HttpContext.Current (일부 설정 파일 경로에 대한 개인 필드를보고 디버깅했다), 그리고 그것은 항상 첫 번째 히트에 null이야. 그 후, HttpContext.Current를 사용할 수 있습니다. 이 사용되어 과 서비스에 대한 속성이 BTW는 HttpContext를 얻을 수 있습니다. –
wojo
뿐만 아니라 MS 연결 버그를 참조하십시오 https://connect.microsoft.com/wcf/feedback/ViewFeedback.aspx?FeedbackID=491844 – wojo