Путь к выходному каталогу как локально, так и на удаленном сервере для веб-службы 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)

Другие вопросы по тегам