Я работал над несколькими C # проектами на протяжении многих лет, и в целом правила согласованы от типа проекта к типу проекта. Но, начав проект веб-сервиса WCF, я нахожу вещи несколько иными. Я должен проверить входящий XML в схему. Я создал папку из корня проекта, XSD, для хранения схем. В предыдущих проектах при обращении к XSD в папке я использовал что-то вроде этого:
XmlTextReader textReader = null;
XmlSchemaCollection xSchemaCollection = null;
XmlValidatingReader valReader = null;
string uri = string.Format(@"{0}\{1}", Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), XSDPath);
// text reader object
textReader = new XmlTextReader(uri);
xSchemaCollection = new XmlSchemaCollection();
xSchemaCollection.Add(null, textReader);
// XML validator object
valReader = new XmlValidatingReader(strXMLDoc, XmlNodeType.Document, null);
Для свойств файлов XSD установлено значение «Всегда копировать в целевую папку». Обычно я получаю правильный путь к XSD, и все идет хорошо. Но в этом проекте WCF Webservice путь, в который копируются файлы XSD, является временным каталогом, и я не могу получить правильный путь. Сбой метода xSchemaCollection.Add.
Кстати, папка XSD в данный момент отсутствует в проекте WCF. Я добавил проект библиотеки классов (в котором в настоящее время находится вышеупомянутый код), и там находятся папка и файлы. Я ожидал, что это устранит проблему с временным каталогом, но это не так.
Есть идеи, что я делаю не так? Заранее спасибо.