Frage

Meine app verwendet eine WebRequest an bestimmten Stellen zu bekommen Seiten von selbst.

Dies sollte kein Problem sein. Es funktioniert eigentlich in Ordnung auf dem Server, der ein „shared“ Hosting-Paket mit Medium Vertrauen. Vor Ort, benutze ich Politik eine benutzerdefinierte Sicherheits basierend auf Medium Vertrauen, das die folgende gehört - direkt aus der Standard-Medium Vertrauensrichtlinie kopiert:

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

Die Codezeile ist in einem benutzerdefinierten XmlRelativeUrlResolver:

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

Die URL angefordert wird, ist auf localhost, in derselben Anwendung wie der Anforderer. Hier ist die Spitze des Stack-Trace.

 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)
siehe

Wer das Problem hier?

@Sijin: Danke für die Anregung. Die URL, die auf dem Resolver gesendet wird auf der Anforderungs-URL basiert, und ich bestätigte im Debugger, der die Website an 127.0.0.1 ergibt das gleiche Ergebnis erreichbar.

War es hilfreich?

Lösung 2

Meine Ignoranz. Ich wusste nicht, dass der $ OriginHost $ Token das originUrl Attribut des Vertrauensstufe ersetzt wurde mit - ich dachte, es nur aus der URL der App kam. Ich hatte dieses Attribut leer ursprünglich links.

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

Andere Tipps

Funktioniert es, wenn Sie 127.0.0.1 setzen anstelle von localhost?

Dies könnte nicht die Lösung sein, aber wenn ich Ihren Beitrag sah erinnerte ich mich an dieses Problem, das ich in etwa vor einem Jahr lief:

  

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

     

Fehlermeldung 401.1, wenn Sie   eine Website durchsuchen, die integrierte verwendet   Authentifizierung und wird auf IIS gehostet   5.1 oder IIS 6

Wir waren die Schaffung eines WebRequest auszusortieren eine Seite kratzen und es funktioniert in der Produktionsumgebung, weil wir keine Loopback Hostnamen wurden unter Verwendung aber auf der Entwicklung Maschinen landeten wir mit Zugriff verweigert (nach der Anwendung von Windows Server 2003 SP2) auf. Der einzige Unterschied ist, dass diese unter dem integrierten Authentifizierung war, die es verursacht zu scheitern ... es hat funktioniert, wenn die Anfrage anonym war (damit ist, warum ich nicht sicher bin, das ist die Antwort für Sie).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top