У меня есть приложение asp.net, которое я модифицирую. Я настраиваю Visual Studio 2010 для публикации на сервере разработки, на котором работает Windows Server 2008 RC 2 (не думаю, что это имеет значение). Я добавил новую веб-форму в приложение через визуальную студию «добавить новый элемент», и она работает на моем локальном компьютере. Когда я публикую на сервере, он начинает выдавать криптографические исключения, потому что пытается получить доступ к файлу .p12 для отправки push-уведомлений Apple на устройство iphone. Сначала я подумал, что с сертификатом что-то не так, поэтому я добавил операторы печати в код и заметил, что он пытается получить доступ к новой странице по пути к файлу на моем локальном компьютере, а не по пути к файлу на сервере. У кого-нибудь есть идеи, почему это делается? Есть ли способ сделать путь к файлу относительно проекта?
Приложение ASP.NET, использующее неверный путь к файлу при публикации на компьютере с Windows Server 2008
Ответы (2)
Вы должны использовать MapPath("{relativePath/FileName}") . Это вернет физический путь.
filename = MapPath("/images/logo.jpg")
Будет что-то вроде "C:\inetpub\webroot\images\logo.jpg"
Сервер значения не имеет. Файл был добавлен с абсолютным путем. Не знаю, почему, и нет времени на исследования.
Как настроен сайт на вашей отладочной машине? Вы используете IIS или сервер разработки ASP.NET? Не уверен, что это имеет большое значение, но переход на IIS и более качественная имитация производства часто решает эти маленькие ошибки. Для переключения добавьте папку в IIS, затем удалите проект и повторно включите с путем HTTP вместо папки проекта.
Если локальный IIS не подходит или вы уже это сделали, я бы выполнил поиск рассматриваемого пути и изменил его там. Если вы не найдете результатов, мы можем как-то встроить это в файл решения.