Тильда '~' во второй попытке оценивается, когда она является частью URL файла, установленного в свойстве элемента управления, такого как HyperLink.NavigateUrl. Если это просто часть строки, переданной в xmlDocument.Load (), она должна быть явно оценена с использованием Server.MapPath("~/MyData.xml")
В качестве альтернативы
Вы можете включить файл в качестве встроенного ресурса. Щелкните правой кнопкой мыши файл в вашем решении и в Build Action выберите Embedded Resource. В параметре «Копировать в выходной каталог» выберите «Не копировать»
Вот пример того, как читать файл:
var assembly = Assembly.GetExecutingAssembly();
if (assembly != null)
{
var stream = assembly.GetManifestResourceStream("RootProjectNamespace.MyData.xml");
if (stream != null)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(stream);
}
}
Обратите внимание, вы должны добавить к имени файла префикс по умолчанию для вашего проекта. Вы можете найти это, щелкнув правой кнопкой мыши по своему проекту, выбрав свойства и на вкладке «Приложение» пространство имен по умолчанию вверху.