Веб-запрос с локального хоста на локальный хост:почему это отрицают?

StackOverflow https://stackoverflow.com/questions/158257

Вопрос

Мое приложение использует 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-адрес находится на локальном хосте, в том же приложении, что и запрашивающая сторона.Вот верхняя часть трассировки стека.

 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)

Кто-нибудь видит здесь проблему?

@Сиджин:Спасибо за предложение.URL-адрес, который отправляется преобразователю, основан на URL-адресе запроса, и я подтвердил в отладчике, что доступ к сайту по адресу 127.0.0.1 дает тот же результат.

Это было полезно?

Решение 2

Мое невежество.Я не знал, что токен $OriginHost$ был заменен атрибутом originUrl уровня доверия — я думал, что он просто взят из URL-адреса приложения.Изначально я оставил этот атрибут пустым.

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

Другие советы

Будет ли работать, если вместо localhost поставить 127.0.0.1?

Возможно, это не решение, но когда я увидел ваш пост, я вспомнил проблему, с которой столкнулся около года назад:

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

Вы получаете ошибку 401.1, когда вы просматриваете веб -сайт, который использует интегрированную аутентификацию и размещена на IIS 5.1 или IIS 6

Мы создавали веб-запрос для очистки страницы, и он работал в нашей производственной среде, поскольку мы не использовали имя хоста обратной связи, но на машинах разработки нам было отказано в доступе (после применения Windows Server 2003 SP2).Единственное отличие здесь в том, что это была встроенная аутентификация, что привело к сбою...это сработало, когда запрос был анонимным (поэтому я не уверен, что это ответ для вас).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top