Frage

Ich habe eine ASP.Net-Seite, die eine Datei IO funktioniert. Wenn ich es von einem Web-Browser anfordern, nämlich Chrom, gelingt es, aber wenn ich es von einem WebClient Beispiel in meiner Anwendung anfordern es gibt mir ein ‚System.Security.SecurityException‘. Gibt es signifikante Unterschiede in den beiden Anfragen? Was muß ich weiß über Code-Access-Sicherheit tun, um diese Seite zu Arbeit aus meinem Web-Client zu bekommen?

Hier ist die rohen 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>
War es hilfreich?

Lösung 2

Das Problem hatte nichts mit dem IIS-Authentifizierung zu tun. Es war die Zip-Bibliothek war ich mit, DotNetZip. CAS war nicht bereit, es Berechtigungen Datei IO zu geben. Ich schließlich mit Dateiströme zu Proxy-IO-Operationen hatte. Der einzige Nachteil ist, dass je Datei, die ich an das Zip-Archiv hinzufügen wollte, musste ich einen Strom offen lassen, bis das Archiv gespeichert wurde. Sie waren Datei Ströme so gab es nur sehr wenig Speicher.

Jemand erwähnte WCF, und das wäre ideal gewesen, aber die Entscheidungsträger beschlossen, dass auf diese Weise zu teuer war.

Andere Tipps

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

Double die Authentifizierung überprüfen. einig Debug-Code ausspucken aktuelle Identität zu protokollieren, wenn es den IO-Betrieb tut.

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