문제

내 앱은 특정 지점에서 WebRequest를 사용하여 페이지 자체에서 페이지를 얻습니다.

이것은 문제가되지 않아야합니다. 실제로 서버에서 잘 작동하며 중간 신뢰를 가진 "공유 된"호스팅 패키지입니다. 로컬로, 나는 기본 중간 신탁 정책에서 바로 복사 된 다음을 포함하는 Medium Trust를 기반으로하는 사용자 정의 보안 정책을 사용합니다.

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

문제 라인은 사용자 정의 XMLRELREATIVEURLRESOLVER에 있습니다.

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 : 제안 해주셔서 감사합니다. Resolver로 전송되는 URL은 요청 URL을 기반으로하며 디버거에서 사이트에 127.0.0.1에 액세스하는 것이 동일한 결과를 얻는 것을 확인했습니다.

도움이 되었습니까?

해결책 2

내 무지. 나는 $ Originhost $ 토큰이 신뢰 수준의 Originurl 속성을 사용하여 대체되었음을 몰랐습니다. 앱의 URL에서 나왔다고 생각했습니다. 원래이 속성을 비워 두었습니다.

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

다른 팁

로컬 호스트 대신 127.0.0.1을 넣으면 작동합니까?

이것은 해결책이 아닐 수도 있지만 귀하의 게시물을 보았을 때 약 1 년 전에 제가 실행 한이 문제를 기억했습니다.

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

통합 인증을 사용하고 IIS 5.1 또는 IIS 6에서 호스팅되는 웹 사이트를 탐색 할 때 오류 401.1을받습니다.

우리는 페이지를 스크랩하기 위해 webRequest를 만들고 있었고 루프백 호스트 이름을 사용하지 않았지만 개발 기계에서는 액세스 거부 (Windows Server 2003 SP2를 적용한 후)로 인해 생산 환경에서 작동했습니다. 여기서 한 가지 차이점은 이것이 통합 된 인증하에있어 실패를 일으킨다는 것입니다 ... 요청이 익명이었을 때 효과가있었습니다 (그래서 이것이 당신에게 답이 확실하지 않습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top