이 오류에 대한 정보가 많지 않지만이 특정 코드에서 캐스팅을 사용하지 않고있어 매우 유용합니다.LINQ 지정된 캐스트가 유효하지 않습니다.
var dsn = Request.ServerVariables["HTTP_HOST"].Split('.').First();
using (var ctx = new SharedDataContext("switchcurrent"))
{
var dbDsn = ctx.SiteObjects.FirstOrDefault(s => s.DSN == dsn);
if (dbDsn == null)
{
Session["CurrentDsn"] = "SwitchCurrent";
}
else
{
Session["CurrentDsn"] = dbDsn.DSN;
Response.Redirect(String.Format("~/{0}", dbDsn.DefaultPage));
}
}
LINQ 문은 오류가 발생하는 곳입니다. 문이 null을 반환하면 코드는 계속 잘되지만 데이터베이스의 객체와 실제로 일치하는 경우이 오류가 발생합니다.
at System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult)at System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)at System.Data.Linq.Table`1.System.Linq.IQueryProvider.Execute[TResult](Expression expression)at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source, Expression`1 predicate) at WebApplication1.Default.SetCurrentDsn() in C:\Code\dir\Default.aspx.cs:line 163 at WebApplication1.Default.Page_Load(Object sender, EventArgs e) in C:\Code\dir\Default.aspx.cs:line 32 at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
SiteObject.Dsn는 문자열입니다
편집 (추가 정보)는
오류 메시지 InvalidCastException이 스택 추적입니다. dsn도 그렇습니다.
기본적으로 'localhost'(db에 없음) 인 경우 코드가 전달되지만 일치하는 경우 ('pgande')이 오류가 발생합니다.
어떤 오류가 있습니까? 이것은 런타임 예외입니까 아니면 컴파일러 오류입니까? 런타임 예외 인 경우 메시지, 예외 유형 및 스택 추적 (및 가능한 내부 예외)과 같은이 예외에 대한 정보를 게시하십시오. 컴파일 오류 인 경우 정확한 오류 메시지 en 컴파일러 오류 번호와 정확한 행을 표시하십시오. – Steven
SiteObjects.DSN의 유형은 무엇입니까? – Dave
어떤 유형이 'DSN'입니까? – Jodrell