Доступ к пути запрещен при использовании псевдонима URL - PullRequest
0 голосов
/ 22 октября 2019

В приложении asp .net MVC появляется сообщение об ошибке, когда я пытаюсь просмотреть изображение, хранящееся на общем сетевом диске, когда я получаю доступ к своему приложению с помощью псевдонима URL.

Однако, когда яДоступ к системе с использованием IP-адреса / имени приложения, изображения отображаются правильно. С другой стороны, когда я использовал что-то вроде https://something.something.com, который является псевдонимом, я снова получил отказ в доступе к общей сетевой папке.

Я реализовал WNetAddConnection2 по этой ссылке (https://www.c -sharpcorner.com / blogs / How-to-Access-Network-Drive-Using-C-Sharp )

Это решило мою проблему, когда я изменил мою папку загрузки и выгрузки в общую сетьпапки. Тем не менее, это не решает мою проблему, когда я получил доступ к веб-приложению с помощью псевдонима URL

Пожалуйста, взгляните на код в ссылке выше. Я следовал этому примеру.

Я ожидал, что к общей папке можно будет получить доступ должным образом, но я не ожидал, что такая же проблема возникнет, если я буду использовать псевдоним URL для доступа к ней. Я не знаю, является ли это проблемой кодирования или проблемой конфигурации IIS. Любая подсказка / помощь или совет будут оценены

РЕДАКТИРОВАТЬ:

Коды: для подключения к папке диска

private int ConnectToShare(string remoteUnc, string username, string password, bool promptUser)
    {
        NETRESOURCE nr = new NETRESOURCE
        {
            dwType = RESOURCETYPE_DISK,
            lpRemoteName = remoteUnc
        };

        int result;
        if (promptUser)
        {
            result = WNetUseConnection(IntPtr.Zero, nr, "", "", CONNECT_INTERACTIVE | CONNECT_PROMPT, null, null, null);
        }
        else
        {
            result = WNetUseConnection(IntPtr.Zero, nr, password, username, 0, null, null, null);
        }

        //if (result != NO_ERROR)
        //{
        //    throw new Win32Exception(result);
        //}
        return result;
    }

public int AccessCredentials(string remoteComputerName, string userName, string password)
    {
        RemoteComputerName = remoteComputerName;
        UserName = userName;
        Password = password;

        return this.ConnectToShare(this._remoteUncName, this.UserName, this.Password, false);
    }

Вкл. Отображение изображения

public bool CredentialIsValid()
    {
        NetworkCredentials credentials = new NetworkCredentials();
        bool valid = false;

        int status = credentials.AccessCredentials(Paths.networkPath, Paths.networkUsername, Paths.networkPassword);
        if (status == 0 || status == 1219)
        {
            valid = true;
        }
        return valid;
    }

    public FileViewModel GetFile(string fullPath)
    {
        FileViewModel file = new FileViewModel();
        if (CredentialIsValid())
        { 
            WebClient client = new WebClient();

            file.fileData = client.DownloadData(Path.GetFullPath(fullPath));
            file.fileName = Path.GetFileName(fullPath);
            file.fileType = Path.GetExtension(fullPath);
        }

        return file;
    }

На контроллере

public ActionResult DisplayImage(string fullPath)
    {
        FileViewModel file = mgr.GetFile(fullPath);

        if(file.fileData == null)
        {
            return View("Network_Drive_Error");
        }
        else
        {
            return File(file.fileData, file.fileType, file.fileName);
        }
    }

Как я уже говорил ранее. Этот код работал, когда я получил доступ к веб-приложению, используя IP-адрес / имя приложения (пример: 192.168.0.78/MyWebApp). Изображения отображаются правильно. Однако, как только я создал псевдоним, такой как https://mywebapps.com., я получил сообщение о том, что доступ к «пути к моей общей папке» запрещен

РЕДАКТИРОВАТЬ 2. Я провел еще несколько испытаний и обнаружил, что ошибкапоявился только когда я использовал https: // перед моим URL. Но мне нужно использовать https: // поэтому я все еще ищу решение

...