2010-12-13 4 views
0

Ich habe eine ASP.Net-Seite, die einige Datei IO funktioniert. Wenn ich es über einen Webbrowser, nämlich Chrome, anfordere, ist es erfolgreich, aber wenn ich es von einer WebClient-Instanz in meiner Anwendung anfordere, gibt es mir eine "System.Security.SecurityException". Gibt es signifikante Unterschiede in den beiden Anfragen? Was muss ich über die Codezugriffssicherheit wissen, damit diese Seite in meinem Web Client funktioniert?Was ist der Unterschied Unsicherheit ein Browser und ein Web-Client?

Hier ist die rohe Fiedler Anfragen und Antworten:

Browser-Anfrage:

GET http://192.168.1.89/QuickCutConsoleDataProvider/UpdateItemFiles.aspx HTTP/1.1 
Host: 192.168.1.89 
Proxy-Connection: keep-alive 
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 

Browser Antwort:

HTTP/1.1 200 OK 
Via: 1.1 PHOBOS 
Connection: Keep-Alive 
Proxy-Connection: Keep-Alive 
Content-Length: 35189 
Date: Tue, 14 Dec 2010 14:08:46 GMT 
Content-Type: application/zip 
Server: Microsoft-IIS/7.5 
Cache-Control: private 
X-AspNet-Version: 2.0.50727 
X-Powered-By: ASP.NET 

... Binary Content ... 

Web Client anfordern:

POST http://192.168.1.89/QuickCutConsoleDataProvider/UpdateItemFiles.aspx?Guid=e30e1826-3d96-4769-a540-acd911cccf02 HTTP/1.1 
Content-Type: multipart/form-data; boundary=---------------------8cd697dcbf75ed4 
Host: 192.168.1.89 
Content-Length: 303 
Expect: 100-continue 

-----------------------8cd697dcbf75ed4 
Content-Disposition: form-data; name="file"; filename="Catalog.xml" 
Content-Type: application/octet-stream 

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<catalog version="1.0"> 
    <items /> 
</catalog> 
-----------------------8cd697dcbf75ed4-- 

Web Client Response (Ausnahme):

HTTP/1.1 200 OK 
Via: 1.1 PHOBOS 
Connection: Keep-Alive 
Proxy-Connection: Keep-Alive 
Content-Length: 1244 
Date: Tue, 14 Dec 2010 14:12:34 GMT 
Content-Type: text/xml; charset=utf-8 
Server: Microsoft-IIS/7.5 
Cache-Control: private 
X-AspNet-Version: 2.0.50727 
X-Powered-By: ASP.NET 

<error type="System.Security.SecurityException"> 
    <message>Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.</message> 
    <stack-trace><![CDATA[ at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) 
    at System.Security.CodeAccessPermission.Demand() 
    at System.IO.File.GetLastWriteTimeUtc(String path) 
    at Ionic.Zip.ZipEntry.Create(String nameInArchive, ZipEntrySource source, Object arg1, Object arg2) 
    at Ionic.Zip.ZipEntry.CreateFromFile(String filename, String nameInArchive) 
    at Ionic.Zip.ZipFile.AddFile(String fileName, String directoryPathInArchive) 
    at Ionic.Zip.ZipFile.AddFile(String fileName) 
    at MyApplication.UpdateItemFiles.GetUpdateContent(XDocument a_xManifest, Stream[] a_arrExtraContent) in C:\Software\MyApplication\Alpha\Web Interface\UpdateItemFiles.aspx.cs:line 282 
    at MyApplication.UpdateItemFiles.Page_Load(Object sender, EventArgs e) in C:\Software\MyApplication\Alpha\Web Interface\UpdateItemFiles.aspx.cs:line 31]]></stack-trace> 
    <inner-exception>null</inner-exception> 
</error> 
+0

Ist die Windows-Authentifizierung aktiviert? – Aliostad

+0

Auf IIS? Ja, es war, ich habe es ausgeschaltet (und die Website neu gestartet). Alles funktioniert immer noch im Browser. – Jordan

+0

können wir einen StackTrace sehen, und haben Sie Fiddlr gefeuert, um zu sehen, welche Header Ihre Browse senden könnte? –

Antwort

0

Das Problem hatte nichts mit IIS-Authentifizierung zu tun. Es war die Zip-Bibliothek, die ich benutzte, DotNetZip. CAS war nicht bereit, ihm Datei-IO-Berechtigungen zu geben. Ich musste schließlich IO-Operationen mit Dateiströmen durchführen. Der einzige Nachteil ist, dass jede Datei, die ich dem Zip-Archiv hinzufügen wollte, ich einen Stream geöffnet lassen musste, bis das Archiv gespeichert wurde. Sie waren Dateiströme, so dass sehr wenig Speicher verwendet wurde.

Jemand erwähnte WCF, und das wäre ideal gewesen, aber der Entscheider entschied, dass dieser Weg zu teuer war.

0

Dies ist sehr viel noch in der Windows-Authentifizierung ausgeführt wird - obwohl Sie glauben, dass Sie es geändert haben. Ich wette, die Identitätsdrohung ist auch an.

Überprüfen Sie die Authentifizierung. Geben Sie Debug-Code aus, um die aktuelle Identität zu protokollieren, wenn die IO-Operation ausgeführt wird.

+0

Ich habe den Identitätswechsel eingeschaltet, um zu versuchen, dieses Problem zu lösen. Gab diesen Benutzer-Account Gott-ähnlichen Zugriff auf die fraglichen Ordner. Nichts. Sollte ich es jetzt ausschalten? – Jordan

+0

Ja, bitte deaktivieren Sie das. Haben Sie das Logging von Identity gemacht? – Aliostad

+0

Jemand hat mir gerade gesagt, ich soll die Identität einschalten (in einem anderen Post), warum sollte ich es jetzt ausschalten ?. Ich versuche auf Elemente aus der Datei zuzugreifen System, benötigt das nicht lokale Rechte? – Jordan