Я получаю очень странное исключение в ролях.Исключение возникает очень редко.
Это код:
protected Guid GetWebsiteLanguage(Guid websiteId, int languageId)
{
Guid websiteLanguagesId = Guid.Empty;
var websites = from item in DataContext.WebsiteLanguages
where item.WebsiteId == websiteId && item.LanguageId == languageId
select item.Id;
if (websites.Count() != 1)
throw new ArgumentException("Wrong channel parameters.");
try
{
websiteLanguagesId = websites.First();
}
catch (Exception ex)
{
string errorMessage = websites.First() == null ? "websites.First() is null" : string.Concat("Invalid Guid ", websites.First().ToString());
throw new Exception(string.Concat(ex.Message, " - Log: ", errorMessage, " - Variables: websiteId = ", websiteId.ToString(), " languageId = ", languageId));
}
return websiteLanguagesId;
}
Исключение, которое я получаю, это:
Указанное приведение недействительно ,- Журнал:
Недопустимый Guid.*
Это вывод исключения из улова.Как вы можете видеть, у нас есть GUID, но он все же дает исключение приведения ...
И иногда это происходит неправильно в Count () этой функции.Тогда это трассировка стека:
System.Data.Linq.IExecuteResult Execute (System.Linq.Expressions.Expression, QueryInfo, System.Data.Linq.SqlClient.IObjectReaderFactory, System.Object [], System.Object[], System.Data.Linq.SqlClient.ICompiledSubQuery [], System.Object) STACKTRACE: at System.Data.Linq.SqlClient.SqlProvider.Execute (запрос на выражение, фабрика запросов QueryInfo, объект IObjectReaderFactory, объект [] parentArgs] userArgs, ICompiledSubQuery [] subQueries, Object lastResult) в System.Data.Linq.SqlClient.SqlProvider.ExecuteAll (запрос выражений, фабрика QueryInfo [] queryInfos, фабрика IObjectReaderFactory, объект [] userArguments, ICompiledSubQuery.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute (запрос выражения) в System.Data.Linq.DataQuery 1.System.Linq.IQueryProvider.Execute[S](Expression expression)
at System.Linq.Queryable.Count[TSource](IQueryable
1 источник) в GetWebsiteLanguage (Guid websiteId, Int32 languageId)
И когда это происходит, единственное решение - перезагрузить пул приложений iis, и он снова заработает.
Есть идеи?
Вот так я обрабатываю свой текстовый текст
public MyDataContext DataContext
{
get
{
//Changed this to make this testable with unit tests
if (HttpContext.Current != null)
{
if (!HttpContext.Current.Items.Contains(DataContextKey))
HttpContext.Current.Items.Add(DataContextKey, new MyDataContext(ConnectionString));
return (MyDataContext)HttpContext.Current.Items[DataContextKey];
}
else
{
//When context is not available
if (context == null)
context = new MyDataContext(ConnectionString);
return context;
}
}
}