2014-06-30 25 views
6

Während die Datei von dem lokalen Rechner auf den Server hochladen, es ist mir dieHochladen Bild funktioniert nicht auf Server

"Server Error in '/' Application. 
Access to the path 'G://images\blog-image2.jpg' is denied." 
zeigt

mir jemand helfen in dieser heraus kann .... Bitte. mein C# code ist dies:

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    //Get Filename from fileupload control 
    string filename = Path.GetFileName(fileuploadimages.PostedFile.FileName); 
    //Save images into Images folder 
    fileuploadimages.SaveAs(Server.MapPath("~/images/" + filename)); 

    //Getting dbconnection from web.config connectionstring 
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString()); 
    //Open the database connection 
    con.Open(); 
    //Query to insert images path and name into database 
    SqlCommand cmd = new SqlCommand("Insert into tblimgs(ImageName,ImagePath) values(@ImageName,@ImagePath)", con); 
    //Passing parameters to query 
    cmd.Parameters.AddWithValue("@ImageName", filename); 
    cmd.Parameters.AddWithValue("@ImagePath", "~/images/" + filename); 
    cmd.ExecuteNonQuery(); 
    //Close dbconnection 
    con.Close(); 
    Response.Redirect("default.aspx"); 
} 

was ist daran falsch?

+0

Ich denke, Sie müssen schreiben Berechtigungen auf dem Server in dieses Verzeichnis: G: \ images \ durch den Benutzer IUSER oder so ähnlich. –

+0

Probieren Sie diese 'Server.MapPath (" ~ \\ images \\ "+ Dateiname)' – meda

+0

Ich versuchte dies auch, aber nichts ist zu ändern .... – Neil

Antwort

1

Sie sollten sicherstellen, dass das von Ihnen verwendete Konto Zugriff auf diesen Dateipfad hat.

Auch würde es wahrscheinlich helfen, Zugriff auf diesen Ordner für den IIS-Benutzer-Account (IUSR glaube ich).

+0

Wie kann ich den Zugang zu diesem Pfad geben? – Neil

+0

Gehen Sie zu G: \ Bilder im Windows Explorer und klicken Sie mit der rechten Maustaste auf den Ordner und gehen Sie zu Eigenschaften -> gehen Sie zur Registerkarte Sicherheit -> Klicken Sie Bearbeiten -> Klicken Sie auf Hinzufügen -> IUSR in das Feld eingeben -> klicken Sie auf Namen überprüfen -> wählen Sie der erste, wenn Sie ein Popup darüber hinaus bekommen. -> Klicken Sie auf OK -> Klicken Sie auf das IUSR-Element im Listenfeld -> wählen Sie Vollzugriff, wo es Berechtigungen für IUSR sagt -> Klicken Sie auf Übernehmen -> Klicken Sie auf OK. Danach sollte der IIS-Benutzer Zugriff auf das Verzeichnis haben. – asven

1

Sie müssen überprüfen, unter welchem ​​Benutzer Ihre Anwendung ausgeführt wird, möglicherweise hat das Benutzerkonto aus Sicherheitsgründen keine Berechtigung zum Schreiben in Unterordner. Geben Sie diesem Benutzer Schreibberechtigungen für den Ordner images und stellen Sie sicher, dass dies der einzige Ordner ist, dem Sie Schreibrechte erteilen, damit das Sicherheitsrisiko minimiert wird.

Sie könnten auch Refactoring Sie Code:

fileuploadimages.SaveAs(Path.Combine(Server.MapPath("~/images"),filename))); 

seit MapPath() anhängen kein Backslash auf den Pfad zugeordnet, weil sie nicht wissen, hat, wenn der Pfad ein Verzeichnis oder eine Datei (es überprüft nicht, ob der angegebene Pfad tatsächlich existiert).

EDIT: Um die richtigen Berechtigungen für diesen Ordner zu gewähren, müssen Sie zunächst für die Website aus dem Anwendungspool, um herauszufinden, was die Identität ist es unter ausgeführt wird (standardmäßig ist die Anwendungspoolidentität). Suchen Sie nach dem IIS APPPOOL\DefaultAppPool Benutzer. Weitere Informationen finden Sie auf der offiziellen IIS-Website unter article.

Wenn das für Sie nicht funktioniert dann überprüfen Sie, ob Ihr asp.net-Konto {MACHINE}\ASPNET Schreibzugriff auf diese Bilder Speicherort hat. Berücksichtigen Sie das Gewähren von Zugriffsrechten für die Ressource auf die ASP.NET-Anforderungsidentität. Klicken Sie dazu mit der rechten Maustaste auf Download-Ordner Properties > Security Tab > Edit > Add > locations > choose your local machine > click OK > Typ ASPNET unter "Enter the object name to select" > Klicken Sie auf Check Names Aktivieren Sie die Kästchen für den gewünschten Zugriff (Vollzugriff). Wenn das für Sie nicht funktioniert, dann sollten Sie dasselbe mit Network Service machen.

Nun sollte dies Ihr lokales Konto {MACHINENAME}\ASPNET anzeigen, dann legen Sie die Schreibberechtigung für dieses Konto fest.

Andernfalls, wenn die Anwendung über <identity impersonate="true"/> imitiert, wird die Identität der anonyme Benutzer (in der Regel IUSR_MACHINENAME) oder der authentifizierte Benutzer anfordern.

+0

Es zeigt immer noch den gleichen Fehler ... Wie kann ich dem Ordner Berechtigungen erteilen? Ich habe versucht, von ftp ..ist es richtig? es funktioniert perfekt, wenn ich es von meinem lokalen Rechner aus starte. es hochladen alle Bilder in Bilder Ordner auf dem gleichen Server .... warum es nicht funktioniert, wenn ich es auf den Server hochladen ..? – Neil

Verwandte Themen