首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无效的强制转换异常-强制转换无效

无效的强制转换异常-强制转换无效
EN

Stack Overflow用户
提问于 2017-02-20 23:52:49
回答 2查看 163关注 0票数 1

这是我网站上的错误。Visual中没有错误,它编译得很好。当我在本地运行网站并单击按钮在Chrome或任何其他浏览器中显示区域时,就会发生这种情况。我完全被这件事弄糊涂了,我在寻求什么帮助??非常感谢。

代码语言:javascript
复制
System.InvalidCastException: Specified cast is not valid.
at MySite.Web.Areas.Mpa.Controllers.ZonesController.d__7.MoveNext() in C:\MySite\Development\routing_branch\src\MySite.Web\Areas\Mpa\Controllers\ZonesController.cs:line 125
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.b__36(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()

这是我正在调用的方法,它显示了第125行:

代码语言:javascript
复制
93 public async Task<PartialViewResult> MapViewModal()
94  {
95      int? impersonatorTenantId;
96      int value;
97      object obj;
98      IZoneAppService zoneAppService = this._zoneAppService;
99      if (this.AbpSession.ImpersonatorTenantId.HasValue)
100     {
101         impersonatorTenantId = this.AbpSession.ImpersonatorTenantId;
102         value = impersonatorTenantId.Value;
103     }
104     else
105     {
106         impersonatorTenantId = this.AbpSession.TenantId;
107         value = impersonatorTenantId.Value;
108     }
109     List<ZoneListDto> zonesByTenantId = await zoneAppService.GetZonesByTenantId(value, true);
110     if (zonesByTenantId == null || zonesByTenantId != null && zonesByTenantId.Count == 0)
111     {
112         zonesByTenantId = new List<ZoneListDto>();
113     }
114     ITenantSettingsAppService tenantSettingsAppService = this._tenantsettingsAppService;
115     if (this.AbpSession.ImpersonatorTenantId.HasValue)
116     {
117         impersonatorTenantId = this.AbpSession.ImpersonatorTenantId;
118         obj = impersonatorTenantId.Value;
119     }
120     else
121     {
122         impersonatorTenantId = this.AbpSession.TenantId;
123         obj = impersonatorTenantId.Value;
124     }
125     string tenantCoordinates = await tenantSettingsAppService.GetTenantCoordinates((long)obj);
126     ZonesMapView zonesMapView = new ZonesMapView()
127     {
128         Zones = zonesByTenantId,
129         TenantCoordinates = tenantCoordinates
130     };
131     return this.PartialView("_MapViewModal", zonesMapView);
132 }

我的桌子布局如下:

代码语言:javascript
复制
dbo.MySiteZones
Columns:
Id (PK, bigint, not null)
TenantId (int, not null)
Name (nvarchar(255), not null)
Caption (nvarchar(600), null)
IsActive (bit, not null)
IsDeleted (bit, not null)
DeleterUserId (bigint, null)
DeletionTime (datetime, null)
LastModificationTime (datetime, null)
LastModifierUserId (bigint, null)
CreationTime (datetime, not null)
CreatorUserId (bigint, null)
PolygonCoordinates (nvarchar(max), null)
HexColor (nvarchar(12), null)
PolygonCoordinatesReversed (nvarchar(max), null)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-20 23:58:59

不能将object直接转换为long。您应该使用Convert.ToInt64(),它甚至强制转换一个对象值:

代码语言:javascript
复制
string tenantCoordinates = await tenantSettingsAppService.GetTenantCoordinates(Convert.ToInt64(obj));

P.S:为什么不将'obj‘声明为long (并相应地更改名称: ):

代码语言:javascript
复制
long obj;
// ... 
string tenantCoordinates = await tenantSettingsAppService.GetTenantCoordinates(obj);

@Jonno提到的编辑更新错误的库调用

票数 2
EN

Stack Overflow用户

发布于 2017-02-21 00:23:51

只要obj是对int的引用,您就可以在转换到long.GetTenantCoordinates((long)(int)obj)之前尝试将显式强制转换为int

不过,我认为您可以将obj声明为intlong

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42356266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档