2008-10-01 7 views
0

내 앱은 특정 시점에 WebRequest를 사용하여 페이지를 가져옵니다.localhost에서 localhost로 WebRequest : 왜 거부됩니까?

이것은 문제가되지 않습니다. 중간 신뢰를 가진 "공유 된"호스팅 패키지 인 서버에서 실제로 제대로 작동합니다. 로컬, 나는 기본 중간 트러스트 정책에서 바로 복사 한 다음 —를 포함하는 중간 신뢰를 기반으로 사용자 지정 보안 정책을 사용

 
<IPermission 
    class="WebPermission" 
    version="1"> 
    <ConnectAccess> 
     <URI uri="$OriginHost$"/> 
    </ConnectAccess> 
</IPermission> 

기분을 상하게하는 라인은 사용자 정의 XmlRelativeUrlResolver에 있습니다

public override object GetEntity(System.Uri puriAbsolute, string psRole, System.Type pReturnType) 
{ 
    return _baseResolver.GetEntity(puriAbsolute, psRole, pReturnType); 
} 

요청되는 URL은 요청자와 동일한 응용 프로그램에서 localhost에 있습니다. 다음은 스택 추적의 맨 위입니다.

 
at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) 
    at System.Security.CodeAccessPermission.Demand() 
    at System.Net.HttpWebRequest..ctor(Uri uri, ServicePoint servicePoint) 
    at System.Net.HttpRequestCreator.Create(Uri Uri) 
    at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase) 
    at System.Net.WebRequest.Create(Uri requestUri) 
    at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials) 
    at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials) 
    at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn) 
    at flow.controls.XmlRelativeUrlResolver.GetEntity(Uri puriAbsolute, String psRole, Type pReturnType) in c:\flow\source\controls\DataTransform.cs:line 105 
    at System.Xml.Xsl.Xslt.XsltLoader.CreateReader(Uri uri, XmlResolver xmlResolver)

누구나 여기에서 문제를 확인할 수 있습니까?

@Sijin : 제안에 감사드립니다. 해결사에게 전송되는 URL은 요청 URL을 기반으로하며 디버거에서 127.0.0.1에있는 사이트에 액세스하면 동일한 결과가 생성됩니다.

답변

0

나의 무지. $ OriginHost $ 토큰이 신뢰 수준의 originUrl 속성을 사용하여 바뀌 었음을 알 수 없었습니다. — 나는 방금 앱의 URL에서 온 것이라고 생각했습니다. 원래이 속성을 비워 두었습니다.

 
<trust level="CustomMedium" originUrl="http://localhost/" /> 
1

localhost 대신 127.0.0.1을 입력하면 작동합니까?

+0

제안 해 주셔서 감사합니다. 해결사에게 전송되는 URL은 요청 URL을 기반으로하며 디버거에서 127.0.0.1에있는 사이트에 액세스하면 동일한 결과가 생성됩니다. – harpo

0

이 솔루션을하지 않을 수 있습니다하지만 난 당신의 게시물을보고 나는 약 1 년 전 우연히이 문제를 기억 :

http://support.microsoft.com/default.aspx/kb/896861

당신은 오류 401.1를받을를 할 때 통합 인증을 사용하며 IIS에서 호스트되는 웹 사이트를 찾습니다 5.1 또는 IIS 6

루프백 호스트 이름을 사용하지 않았기 때문에 페이지를 스크랩하는 WebRequest를 만들었지 만 루프백 호스트 이름을 사용하지 않았기 때문에 프로덕션 환경에서 작동했지만 개발 컴퓨터에서는 Windows Server 2003 SP2를 적용한 후 액세스가 거부되어 종료되었습니다. 여기에있는 한 가지 차이점은 이것이 통합 인증에 의해 실패한 것입니다 ... 요청이 익명 일 때 작동했습니다 (그래서 이것이 내가 당신에게 해답이라고 확신하지 못하는 이유입니다).

+0

감사합니다. 언급 한대로 문제를 발견했지만, 나는 또한 당신이 말하는 것과 같은 것으로 뛰어 들어 왔습니다. WebRequest는 요청이 브라우저에서 수행하는 방식으로 주관 자격 증명과 함께 전송되지 않습니다. 당신은 "수동으로"요청 헤더에 추가해야합니다. – harpo

관련 문제