Путь к выходному каталогу как локально, так и на удаленном сервере для веб-службы ASP.NET
Я построил проект службы ASP.NET RESTful с C#. Мне нужно добавить несколько пользовательских файлов XML с конфигурацией, которые мне нужно читать и обрабатывать во время выполнения.
Я добавил файлы XML в свой проект и установил свойство "Копировать в выходной каталог" как "Копировать всегда".
Чтобы открыть файл, я использовал следующий фрагмент:
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "configuration.xml");
Это прекрасно работает, когда я публикую проект на сервере, но если я запускаю веб-сервисы локально, выходной каталог меняется, и мне нужно добавить bin
к началу пути вроде:
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin\\configuration.xml");
Есть ли способ получить правильный выходной каталог для локального и удаленного сервера?
2 ответа
Вместо того чтобы копировать файлы в выходную папку, вы можете сохранить их в корневой папке проекта (или в некоторой структуре подпапок) и использовать метод HttpServerUtility.MapPath(), чтобы определить правильный физический путь к файлу в папке. сервер (как локальный, так и удаленный).
Так что в вашем сценарии, HttpContext.Current.Server.MapPath("configuration.xml")
вернет путь как C:\MyWebApp\configuration.xml
который вы можете загрузить как обычно.
Вы можете установить свойство Build Action как "Embedded Resource" файла configuration.xml, а затем получить доступ к файлу с помощью Assembly.GetExecutingAssembly().GetManifestResourceStream()
например Assembly.GetExecutingAssembly().GetManifestResourceStream(MyPRoject.configuration.xml)