WebRequest от localhost к localhost: почему он отклоняется? - PullRequest
0 голосов
/ 01 октября 2008

Мое приложение использует 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)

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

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

Ответы [ 3 ]

1 голос
/ 01 октября 2008

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

0 голосов
/ 01 октября 2008

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

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

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

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

0 голосов
/ 01 октября 2008

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

<trust level="CustomMedium" originUrl="http://localhost/" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...