Domanda

La mia app utilizza una richiesta Web in determinati punti per ottenere pagine da se stessa.

Questo non dovrebbe essere un problema. In realtà funziona benissimo sul server, che è un "condiviso" pacchetto di hosting con attendibilità media. A livello locale, utilizzo una politica di sicurezza personalizzata basata sulla fiducia Media, che include quanto segue & # 8212; copiato direttamente dalla politica di fiducia Media predefinita:

<IPermission
  class="WebPermission"
  version="1">
    <ConnectAccess>
        <URI uri="$OriginHost
public override object GetEntity( System.Uri puriAbsolute, string psRole, System.Type pReturnType )
{
    return _baseResolver.GetEntity( puriAbsolute, psRole, pReturnType );
}
quot;/> </ConnectAccess> </IPermission>

La linea offensiva si trova in un XmlRelativeUrlResolver personalizzato:

 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)

L'URL richiesto è su localhost, nella stessa applicazione del richiedente. Ecco la parte superiore della traccia dello stack.

<*>

Qualcuno vede il problema qui?

@Sijin: grazie per il suggerimento. L'URL che viene inviato al resolver si basa sull'URL della richiesta e nel debugger ho confermato che l'accesso al sito in 127.0.0.1 produce lo stesso risultato.

È stato utile?

Soluzione 2

La mia ignoranza. Non sapevo che il token $ OriginHost $ fosse stato sostituito usando l'attributo originUrl del livello di attendibilità - pensavo che provenisse solo dall'URL dell'app. Inizialmente avevo lasciato vuoto questo attributo.

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

Altri suggerimenti

Funziona se inserisci 127.0.0.1 invece di localhost?

Questa potrebbe non essere la soluzione ma quando ho visto il tuo post mi sono ricordato di questo problema che ho riscontrato circa un anno fa:

  

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

     

Quando si riceve l'errore 401.1   navigare in un sito Web che utilizza Integrated   Autenticazione ed è ospitato su IIS   5.1 o IIS 6

Stavamo creando un WebRequest per schermare una pagina e ha funzionato nel nostro ambiente di produzione perché non stavamo usando un nome host di loopback ma su macchine di sviluppo abbiamo finito con l'accesso negato (dopo aver applicato Windows Server 2003 SP2). L'unica differenza qui è che questo era sotto autenticazione integrata che ha causato il fallimento ... ha funzionato quando la richiesta era anonima (quindi è per questo che non sono sicuro che questa sia la risposta per te).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top