0

我的应用在某些时候使用 WebRequest 从自身获取页面。

这应该不是问题。它实际上在服务器上运行良好,这是一个具有中等信任的“共享”托管包。在本地,我使用基于中等信任的自定义安全策略,其中包括以下内容 - 直接从默认的中等信任策略复制:

<IP权限
  类="WebPermission"
  版本="1">
    <连接访问>
        <URI uri="$OriginHost$"/>
    </连接访问>
</IPermission>

违规行位于自定义 XmlRelativeUrlResolver 中:

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

被请求的 url 位于本地主机上,与请求者在同一个应用程序中。这是堆栈跟踪的顶部。

在 System.Security.CodeAccessSecurityEngine.Check(对象需求,StackCrawlMark& stackMark,布尔 isPermSet)
   在 System.Security.CodeAccessPermission.Demand()
   在 System.Net.HttpWebRequest..ctor(Uri uri,ServicePoint 服务点)
   在 System.Net.HttpRequestCreator.Create(Uri Uri)
   在 System.Net.WebRequest.Create(Uri requestUri,布尔值 useUriBase)
   在 System.Net.WebRequest.Create(Uri requestUri)
   在 System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri,ICredentials 凭据)
   在 System.Xml.XmlDownloadManager.GetStream(Uri uri,ICredentials 凭据)
   在 System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri,字符串角色,ObjectToReturn 类型)
   在 c:\flow\source\controls\DataTransform.cs:line 105 中的 flow.controls.XmlRelativeUrlResolver.GetEntity(Uri puriAbsolute, String psRole, Type pReturnType)
   在 System.Xml.Xsl.Xslt.XsltLoader.CreateReader(Uri uri,XmlResolver xmlResolver)

有人在这里看到问题吗?

@Sijin:谢谢你的建议。发送到解析器的 url 基于请求 URL,我在调试器中确认访问 127.0.0.1 的站点会产生相同的结果。

4

3 回答 3

1

如果您放置 127.0.0.1 而不是 localhost,它会起作用吗?

于 2008-10-01T15:38:22.337 回答
0

我的无知。我不知道 $OriginHost$ 令牌是使用信任级别的 originUrl 属性替换的——我以为它只是来自应用程序的 url。我最初将此属性留空。

<trust level="CustomMedium" originUrl="http://localhost/" />
于 2008-10-01T16:17:09.137 回答
0

这可能不是解决方案,但是当我看到您的帖子时,我想起了大约一年前遇到的这个问题:

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

当您浏览使用集成身份验证并托管在 IIS 5.1 或 IIS 6 上的网站时,您会收到错误 401.1

我们正在创建一个 WebRequest 来筛选页面,它在我们的生产环境中工作,因为我们没有使用环回主机名,但在开发机器上我们最终被拒绝访问(在应用 Windows Server 2003 SP2 之后)。这里的一个区别是这是在集成身份验证下导致它失败......当请求是匿名的时它工作(这就是为什么我不确定这是你的答案)。

于 2008-10-01T19:58:55.657 回答