Чтение из выходного файла в установленной службе WCF - PullRequest
1 голос
/ 12 мая 2010

Я включил текстовый файл в качестве выходного в проекте настройки WCF.Текстовый файл правильно расположен в той же папке, где находятся файл dll, exe и config после установки проекта (C: \ Program Files \ KLTesting \ KLTestApp).Однако когда программа пытается прочитать ее, она выглядит в «C: \ Windows \ system32», как правильно найти и прочитать ее?

У меня есть

string a = Directory.GetCurrentDirectory();
a += "/R0303.txt";
string content = File.ReadAllText(a);

Спасибо.

Ответы [ 2 ]

1 голос
/ 12 мая 2010

Вы должны использовать AppDomain.CurrentDomain.BaseDirectory или AppDomain.CurrentDomain.SetupInformation.ApplicationBase вместо этого, чтобы получить каталог вашего .exe файла.

0 голосов
/ 12 мая 2010

Во-первых, вы не должны вызывать Directory.GetCurrentDirectory () и объединять с именем файла. Служба работает на веб-сервере, таком как IIS или контейнер другого типа, поэтому GetCurrentDirectory не даст вам того, о чем вы думаете, как вы узнали. (Для быстрого касания, в качестве рекомендации в будущем, если вы хотите объединить пути, вы должны использовать метод Path.Combine, поскольку он будет обрабатывать все угловые случаи и быть кроссплатформенным.)

Есть несколько способов сделать это:

Assembly myAssembly = Assembly.GetAssembly(SomeTypeInAssm.GetType());
string fullFileName = Path.Combine(myAssembly.Location, "MyFile.txt");

fullFileName должно быть тем, что вы ищете. Убедитесь, что вы используете тип, который на самом деле находится в сборке, расположенной и на которую ссылается рассматриваемый каталог. Однако имейте в виду, что этот файл в вашем вопросе в области Program Files является безопасной областью в Vista и более поздних ОС, и вы можете не иметь доступа ни к чему, кроме чтения файла.

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

Также вы можете убедиться, что файл, который вы хотите загрузить, находится в среде веб-сервера, доступной для рассматриваемой службы WCF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...