2014-08-30 2 views
0

Я сделал приложение в asp.net C# с использованием linq и оракул базы данных. Это приложение отлично работает на Widows 7 32-битный локальный хост. Но когда я развернул это приложение на сервере Windows 2008 r2.It дает следующий error.Guide мне, что следующий error.How Могу ли я проверить эту ошибку на сервере развертывания и как я могу решить эту ошибкуУказанный приказ недействителен. ошибка отображается в окне сервера 2008 r2

Specified cast is not valid. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidCastException: Specified cast is not valid.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[InvalidCastException: Specified cast is not valid.]

System.Data.UnboxT`1.ValueField(Object value) +54

sis.<>c__DisplayClass55.b__0(DataRow r) +38

System.Linq.WhereEnumerableIterator`1.MoveNext() +156

System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +165

System.Linq.d__81`1.MoveNext() +472

System.Linq.Enumerable.Count(IEnumerable`1 source) +267

sis.regreport.Page_Load(Object sender, EventArgs e) +5015

System.Web.UI.Control.LoadRecursive() +71

System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean

includeStagesAfterAsyncPoint) +3178

var vcolM = dt.AsEnumerable() 
      .Where(r => r.Field<string>("MAJ") == (string)vprglist 
      && r.Field<string>("SPEC") == (string)vspecourse 
      && r.Field<string>("L_ABR_CODE") == (string)genderEng[1] 
      && r.Field<string>("reg") == (string)drRegion["reg"] 
      && r.Field<decimal>("year") == syrcnt) 
      .Sum(r => Convert.ToInt32(r["strength"])); 

Все LinQ как выше работает отлично в местном pc.But давая ошибку на сервере Windows 2008.Where syrcnt is int.

+0

поставить точку останова на линии, и исследовать точно, какой тип ключа объекта есть. Когда вы это знаете, вы будете в лучшем положении, чтобы решить, какой тип броска вам нужен. –

+0

Потому что в сервере deploymnet Как вставить точку останова –

+0

Потому что на сервере разработки доступны только файлы DLL. Но в локальном приложении pc работает нормально –

ответ

0

Наиболее вероятной причиной InvalidCastException является линия r.Field<string>("MAJ") , r.Field<decimal>("year"). Метод расширения Field<T> будет генерировать InvalidCastException в случае, когда фактический тип данных не соответствует типу, который был передан Field<T>.

ИЛИ

лежит здесь Convert.ToInt32(r["strength"]), сила не может быть получение соответствующего типа

Честно говоря, я думаю, что вы проблема лежит в линии r.Field<decimal>("year"). Может быть, я не прав, как там не так много информации о типе данных ваших переменной syrcnt

Таким образом, давая вам исключение System.InvalidCastException: Specified cast is not valid

+0

syrcnt is int, потому что я использую это для (int syrcnt = 0; ...) –

+0

, но это работает в localhost –

+0

есть ли способ проверить ошибку на сервере развертывания –

Смежные вопросы