В приложении 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: // поэтому я все еще ищу решение