Я понял это. Вместо того, чтобы добавлять их к тегу ресурса, я определил его в разделе Фазы сборки-> Копировать файлы . Ключ должен установить опцию Destination на Wrapper , которая указывает, что файлы / папки будут скопированы на уровень папки myApp.app.
Это похоже на проблему синхронизации. Простое решение будет иметь общий объект блокировки (в вашем классе):
private static object _lock = new object();
Тогда ваш код становится:
string ocKey = "ocm_" + HttpContext.Current.GetHashCode().ToString();
lock (_lock) {
if (!HttpContext.Current.Items.Contains(ocKey))
{
HttpContext.Current.Items.Add(ocKey, new ElevationEntityModel(EFConnectionString));
}
_eem = HttpContext.Current.Items[ocKey] as ElevationEntityModel;
}
Блок блокировки в основном означает, что как только поток входит блок "блокировка", другие потоки не могут получить доступ к этому блоку, пока не завершится первый поток. Это остановит конфликт между методом «Contains» и методом «Add».
Примечание: Если где-либо еще в вашем приложении есть доступ к коллекции Items в HttpContext.Current, вам также необходимо выполнить синхронизацию. Целесообразно создать собственную коллекцию, добавить ее в коллекцию Items и синхронизировать доступ к ней.
Это вызвано тем, что у вас происходит многопоточность и вы обращаетесь к одному и тому же ObjectContext без предварительной синхронизации потоков ...