Nicht speichern Sie die Datei mit ASP.NET FileUpload - Zugriff verweigert
den code unten ist für meine website um Bilder einzufügen, Auf meinem compouter, kann ich einfügen pics aber wenn ich übergeben Sie es an den remote-Rechner, bekomme ich die Fehlermeldung. Hier ist der code:
Protected Sub dvPictureInsert_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs) Handles dvPictureInsert.ItemInserted
'If the record was successfully inserted, save the picture
If e.AffectedRows > 0 Then
'Determine the maximum pictureID for this user
Dim results As DataView = CType(maxPictureIDDataSource.Select(DataSourceSelectArguments.Empty), DataView)
Dim pictureIDJustAdded As Integer = CType(results(0)(0), Integer)
'Reference the FileUpload control
Dim imageUpload As FileUpload = CType(dvPictureInsert.FindControl("imageUpload"), FileUpload)
If imageUpload.HasFile Then
Dim baseDirectory As String = Server.MapPath("~/UploadedImages/")
imageUpload.SaveAs(baseDirectory & pictureIDJustAdded & ".jpg")
End If
Hier ist die Fehlermeldung:
Server Error in '/bitte-Gott"
- Anwendung. Der Zugriff auf den Pfad
'D:\Hosting\4423045\html\please-god\UploadedImages\3.jpg'
verweigert. Beschreibung: Eine nicht behandelte
Ausnahme ist aufgetreten während der
Ausführung der aktuellen Webanforderung.
Bitte überprüfen Sie die Stapelüberwachung für weitere
Informationen über den Fehler und wo
es entstand in den code.Exception Details:
System.UnauthorizedAccessException:
Der Zugriff auf den Pfad
'D:\Hosting\4423045\html\please-god\UploadedImages\3.jpg'
verweigert.ASP.NET nicht autorisierten Zugriff auf
die angeforderte Ressource. Betrachten
die Gewährung der Zugriffsrechte auf die Ressource
der ASP.NET Wunsch-Identität.
ASP.NET hat eine Basis Prozessidentität
(in der Regel {MACHINE}\ASPNET auf IIS 5
oder Network Service unter IIS 6), die
verwendet, wenn die Anwendung nicht
die Identität. Wenn die Anwendung
über einen Identitätswechsel , die Identität wird
der anonyme Benutzer (normalerweise
IUSR_MACHINENAME) bzw. der authentifizierte
Benutzer anfordern.Gewähren ASP.NET Zugriff auf eine Datei
der rechten Maustaste auf die Datei im Explorer,
wählen Sie "Eigenschaften" und wählen Sie die
Registerkarte "Sicherheit". Klicken Sie auf "Add" um die
entsprechenden Benutzer oder die Gruppe. Highlight
die ASP.NET Konto, und überprüfen Sie die
Boxen für den gewünschten Zugriff.Quelle Fehler:
Zeile 21:, Wenn
imageUpload.HasFile Dann Linie 22:
Dim Als String baseDirectory =
Server.MapPath("~/UploadedImages/")
Zeile 23:
imageUpload.SaveAs(baseDirectory &
pictureIDJustAdded & ".jpg") Zeile 24:
End If Zeile 25: End If Quelle
Datei:
D:\ - Hosting\4423045\html\bitte-Gott\PhotoAdmin\Default.aspx.vb
Zeile: 23Stack Trace:
[UnauthorizedAccessException: Der Zugriff
der Pfad
'D:\Hosting\4423045\html\please-god\UploadedImages\3.jpg'
verweigert.]
System.IO.__Fehler.WinIOError(Int32
errorCode, String maybeFullPath)
+7715167 System.IO.FileStream.Init(String path,
FileMode mode, FileAccess access,
Int32 rights, Boolean useRights,
FileShare share, Int32 bufferSize,
FileOptions options,
SECURITY_ATTRIBUTES secAttrs, String
msgPath, Boolean bFromProxy) +1162
System.IO.FileStream..ctor(String
path, FileMode mode, FileAccess
access, FileShare share, Int32
bufferSize, FileOptions options,
String msgPath, Boolean bFromProxy)
+61 System.IO.FileStream..ctor(String
path, FileMode mode) +55
System.Web.HttpPostedFile.SaveAs(String
filename) +99
System.Web.UI.WebControls.FileUpload.SaveAs(String
filename) +23
PhotoAdmin_Default.dvPictureInsert_ItemInserted(Objekt
Absender, DetailsViewInsertedEventArgs
e) in
D:\ - Hosting\4423045\html\bitte-Gott\PhotoAdmin\Default.aspx.vb:23
System.Web.UI.WebControls.DetailsView.OnItemInserted(DetailsViewInsertedEventArgs
e) +108
System.Web.UI.WebControls.DetailsView.HandleInsertCallback(Int32
affectedRows, Exception ex) +69
System.Web.UI.DataSourceView.Insert(IDictionary
Werte,
DataSourceViewOperationCallback
callback) +134
System.Web.UI.WebControls.DetailsView.HandleInsert(String
commandArg, Boolean causesValidation -)
+274-System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs
e, Boolean causesValidation, String
validationGroup) +676
System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Objekt
source, EventArgs e) +95
System.Web.UI.Kontrolle.RaiseBubbleEvent(Objekt
source, EventArgs args) +37
System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Objekt
source, EventArgs e) +113
System.Web.UI.Kontrolle.RaiseBubbleEvent(Objekt
source, EventArgs args) +37
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs
e) +118
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String
eventArgument) +135
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
eventArgument) +10
System.Web.UI.Seite.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument)
+13 System.Web.UI.Seite.RaisePostBackEvent(NameValueCollection
postData) +175
System.Web.UI.Seite.ProcessRequestMain(Boolean
includeStagesBeforeAsyncPoint, Boolean
includeStagesAfterAsyncPoint) +1565
- möglich, Duplikat der asp.net FileUpload-control-problem: Zugriff auf das Verzeichnis verweigert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie sicherstellen, dass der IIS oder der server läuft die website über die Berechtigung zum schreiben in dieses Verzeichnis.
Sie könnten dies tun, indem Sie den Ordner -> Eigenschaften-> Registerkarte "Sicherheit".
Wenn das nicht helfen, könnte man überprüfen in der Ereignis-Protokoll, um herauszufinden, mit welchen account es versucht darauf zuzugreifen.
Könnten Sie auch wollen, Lesen Sie diese post zu.
Sogar, wenn Sie die App-Pool-set, um einen Benutzer mit den richtigen rechten, wenn Sie Identitätswechsel aktiviert in Ihrem web.config, dann erhalten Sie diese Fehlermeldung.
Löschen Sie diese Zeile aus Ihrem web.config deaktivieren Sie Identitätswechsel.
Heute hatte ich das gleiche problem, getestet habe ich es lokal und auf dem live-server, aber der gleiche Fehler war, die mich frustriert. Dann entschied ich mich zu kritisch zu überprüfen meine
code
so dass ich herausfinden kann, was hat das problem verursacht. Und da war das problem, ich war keine Angabe eines Dateinamens in der fileupload -SaveAs()
Methode. Ich weiß, die op ist die Angabe einer richtigen Pfad aber es könnte passieren, um jemand anderes in der Zukunft vielleicht.Wie mein code sah vor:
fileupload.SaveAs(Server.MapPath($"{basedir}"));
Wie sieht es jetzt aus:
fileupload.SaveAs(Server.MapPath($"{basedir}/{fileupload.FileName}"));