2014-06-30 12 views
6

Trong khi tải lên các tập tin từ máy tính cục bộ vào máy chủ, nó được hiển thị cho tôi nhữnghình ảnh tải lên không được làm việc trên máy chủ

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

Ai đó có thể giúp tôi ra trong này .... Xin vui lòng. mã C# của tôi là:

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"); 
} 

có gì sai trong trường hợp này?

+0

Tôi nghĩ bạn phải cho phép quyền ghi trên máy chủ vào thư mục này: G: \ images \ bởi người dùng IUSER hoặc một cái gì đó tương tự. –

+0

Hãy thử 'Server.MapPath (" ~ \\ images \\ "+ filename)' – meda

+0

Tôi đã thử điều này, nhưng không có gì thay đổi .... – Neil

Trả lời

1

Bạn sẽ muốn đảm bảo tài khoản bạn đang sử dụng có quyền truy cập vào đường dẫn tệp đó.

Cũng có thể sẽ giúp cung cấp quyền truy cập vào thư mục đó cho tài khoản người dùng IIS (IUSR tôi tin).

+0

làm cách nào tôi có thể cấp quyền truy cập vào đường dẫn đó? – Neil

+0

Vào G: \ images trong windows explorer và nhấp chuột phải vào thư mục và vào Properties -> vào tab Security -> Bấm Edit -> Click Add -> Type IUSR trong hộp name -> click check names -> select the đầu tiên nếu bạn nhận được một popup qua đó. -> Click ok -> Nhấn vào mục IUSR trong hộp danh sách -> chọn Full Control nơi nó nói Quyền cho IUSR -> Nhấn Apply -> Nhấn Ok. Sau đó người dùng IIS sẽ có quyền truy cập vào thư mục. – asven

1

Bạn cần kiểm tra xem ứng dụng của bạn đang chạy dưới ứng dụng nào, có thể tài khoản người dùng sẽ không có quyền ghi vào bất kỳ thư mục con nào vì lý do bảo mật. Cung cấp cho người dùng đó quyền ghi vào thư mục hình ảnh và đảm bảo rằng đó là thư mục duy nhất mà bạn cung cấp cho nó quyền ghi để giảm thiểu rủi ro bảo mật.

Bạn cũng có thể cấu trúc lại bạn mã để:

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

từ MapPath() không thêm dấu gạch chéo ngược với con đường ánh xạ bởi vì nó không có cách nào để biết nếu con đường là một thư mục hoặc một tập tin (nó không kiểm tra xem đường dẫn đã cho có thực sự tồn tại hay không).

EDIT: Để cấp quyền truy cập đúng đến thư mục đó, trước tiên bạn cần phải tìm hiểu từ các hồ bơi ứng dụng cho trang web bản sắc nó đang chạy dưới là những gì (theo mặc định đây là Application Pool Identity). Hãy tìm người dùng IIS APPPOOL\DefaultAppPool. Xem điều này article trên trang web chính thức của IIS để biết thêm chi tiết.

Nếu điều đó không hiệu quả với bạn thì hãy kiểm tra xem tài khoản asp.net của bạn {MACHINE}\ASPNET có quyền ghi vào vị trí hình ảnh đó không. Xem xét cấp quyền truy cập vào tài nguyên cho danh tính yêu cầu ASP.NET. Để thực hiện việc này, nhấp chuột phải vào thư mục tải xuống Properties > Security Tab > Edit > Add > locations > choose your local machine > click OK > Nhập ASPNET bên dưới "Enter the object name to select" > Nhấp vào Check Names Chọn các hộp cho quyền truy cập mong muốn (Toàn quyền kiểm soát). Nếu điều đó không hiệu quả với bạn thì hãy xem xét thực hiện tương tự với Network Service.

Hiện tại tài khoản này sẽ hiển thị tài khoản {MACHINENAME}\ASPNET địa phương của bạn, sau đó bạn đặt quyền ghi vào tài khoản này.

Nếu không, nếu ứng dụng đang mạo danh qua <identity impersonate="true"/>, danh tính sẽ là người dùng ẩn danh (thường là IUSR_MACHINENAME) hoặc người dùng yêu cầu được xác thực.

+0

Nó vẫn hiển thị cho tôi cùng một lỗi ... làm cách nào tôi có thể cấp quyền cho thư mục? tôi đã cố gắng từ ftp ..đúng không? nó hoàn toàn hoạt động khi tôi chạy nó từ máy cục bộ của mình. nó tải lên tất cả các hình ảnh vào thư mục hình ảnh trên cùng một máy chủ .... tại sao nó không hoạt động khi tôi tải nó lên máy chủ ..? – Neil

Các vấn đề liên quan