所有
我在部署ASP.NET 4.0网页时遇到了麻烦。错误是
System.InvalidProgramException:公共语言运行时检测到无效程序
64位Windows Server上的IIS7上发生错误。同一页面适用于我的开发盒(32位Windows 7)和Visual Studio开发环境中的IIS7。我不知道IIS7配置有任何差异。
我已经使用PEVerify来验证应用程序bin目录中的dll。
我可以通过使用实体框架查询来填充DataGrid.DataSource来重现该问题。这不是一个特别沉重的问题。
关于可能导致这种情况的任何想法?我的下一步是尝试简单地使用查询。
感谢您的帮助。
答案 0 :(得分:4)
这看起来像是由于十进制类型的主键(1,0)。
答案 1 :(得分:1)
我认为这可能是一些问题。根据您的实体框架模型以及它的大小/复杂程度,您可能会遇到JIT compiler的限制。这适用于2.0,因此它也适用于4.0。
假设您没有任何大型方法,您是否为任何CPU编译程序集?如果您指定了处理器,则32/64位之间的不匹配将导致问题。尝试使用Any CPU重新运行。
如果有效,请告诉我。
埃里克
答案 2 :(得分:0)
我在几行没有错误的代码行上遇到了同样的错误。幸运的是,我能够将我的更改恢复到工作状态并回溯我的步骤。事实证明,这是导致错误的同一Task.Run()
机箱内的一行代码。令人害怕的是代码没有任何问题:var test = user.objectId.HasValue;
但是一旦我删除了这一行,错误便消失了。
public virtual Task<IList<string>> GetRolesAsync(TUser user) {
if (user == null)
throw new ArgumentNullException("user");
return Task.Run(() => {
var test = user.objectId.HasValue;
var userRolesQuery = objectManager.buildQueryByFilter<List<security.UserRole>>("user = '{0}'", user.objectId);
objectManager.buildSubquery<TRole>("role", userRolesQuery);
var userRoles = objectManager.openByQuery<List<security.UserRole>>(userRolesQuery);
return (IList<string>)userRoles.Select(userRole => userRole.role.name).ToList();
});
}