У нас есть обновляемый веб-проект, написанный на c #, с обычной реализацией веб-формы, использующей главную страницу, скины, элементы управления пользователя и т. Д.До этого момента мы пренебрегаем изменением языка компиляции по умолчанию с VB на C #.Однако, как только мы его изменим, мы увидим следующую ошибку.
Object reference not set to an instance of an object. --->
System.NullReferenceException: Object reference not set to an instance
of an object. at ASP.Default.__DataBinding__control499(Object sender,
EventArgs e) at System.Web.UI.Control.OnDataBinding(EventArgs e) at
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at
System.Web.UI.Control.DataBindChildren() at
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at
System.Web.UI.Control.DataBindChildren() at
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at
System.Web.UI.Control.DataBindChildren() at
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at
System.Web.UI.Control.DataBindChildren() at
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at
....
Дальнейшие исследования указывают на то, что эта ошибка генерируется из сборки, связанной с темой (Источник: App_Theme_Default.zclakrlo).Любые идеи?
Один из моих коллег предположил, что это может быть связано с файлом скина, так как у нас есть тема темы «По умолчанию» и нет способа указать язык в файле скина.Следовательно, когда среда выполнения asp.net пытается скомпилировать ее в C #, это вызовет конфликт имен?Имеет ли это смысл?
Любая помощь приветствуется.
Обновление: Оказывается, в одном из файлов скина есть тег span, который выглядит следующим образом:
<span runat="server" visible='<%# Eval("foo") %>'>
где foo - это строковое значение «true» или «false».По какой-то причине это работает при компиляции VB, но не работает в C #.
Исправление заключается в изменении типа foo со строки на bool.В общем, очень странный крайний случай!