我很难找到为什么发生以下错误.我将在错误描述下面概述令人费解的方面.
[A] ASP.common_resultmessagepanel_ascx无法转换为
[B] ASP.common_resultmessagepanel_ascx.
类型A源自"App_Web_resultmessagepanel.ascx.38131f0b.2c4hpv_z,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null
",位于
"C:\ Windows\Microsoft.NET\Framework\v4.0.30319 "位置的"默认"上下文中\Temporary ASP.NET Files\MyWebApp\dc3e0df6\ba1606c8\App_Web_resultmessagepanel.ascx.38131f0b.2c4hpv_z.dll'.
类型B源自'App_Web_wz3shqfq,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'
在上下文'Default'位置
'C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\MyWebApp\dc3e0df6\ba1606c8\App_Web_wz3shqfq.dll".
错误中引用的类是继承自System.Web.UI.UserControl并实现System.Web.UI.ITextControl的Web用户控件.
控件已注册并在母版页上使用.父母版主页或实现页面都没有控件实例.
类和标记页都在Web应用程序项目中.
异常不会作为应用程序代码的直接结果发生,它发生在内部.NET Framework代码执行期间.
该项目是一个Web应用程序,而不是一个Web站点.
Web应用程序被编译为单个二进制文件,每个文化将文化特定资源编译为一个二进制文件.
为异常中的每个类型报告的上下文是相同的,但我能够验证当发生异常时,应用程序的Temporary ASP.NET Files文件夹中实际上有2个单独的类定义.
用户控件始终存在并在应用程序中使用,但在将用户控件添加到母版页后,异常首先开始发生.
异常不会持续发生.创建临时文件后,每次请求页面时都会发生异常.如果有任何原因导致临时文件被清除或重新创建,那么是否将再次创建重复的临时类定义/ DLL是随机的.这可能是web.config更改,回收应用程序池,有时甚至只是更新/重建的Web应用程序二进制文件.
堆栈跟踪的最后一位:
ASP.Default.__BuildControl__control35(Control ctrl) in C:\Projects\ABC.Web\App_Themes\Default\CheckBox.skin:3
System.Web.UI.ControlSkin.ApplySkin(Control control) +12
System.Web.UI.PageTheme.ApplyControlSkin(Control control) +119
System.Web.UI.Control.ApplyStyleSheetSkin(Page page) +61
ASP.masterpages_mymaster_master.__BuildControlpnlResults() in C:\Projects\ABC.Web\MasterPages\MyMaster.master:10
ASP.masterpages_mymaster_master.__BuildControl__control2(Control __ctrl) in C:\Projects\ABC.Web\MasterPages\MyMaster.master:9
System.Web.UI.CompiledTemplateBuilder.InstantiateIn(Control container) +12
System.Web.UI.MasterPage.InstantiateInContentPlaceHolder(Control contentPlaceHolder, ITemplate template) …Run Code Online (Sandbox Code Playgroud) 如果配置文件中有嵌套结构,那么在 Powershell 等命令行环境中使用什么命名约定或变量名称格式来覆盖该值?
.NET config.json 文件:
{
"L1a": {
"L1a2a": {
"L1a2a1": "value"
},
"L2b": false
},
"L1b": false
}
Run Code Online (Sandbox Code Playgroud)
从 .NET 应用程序代码中,可以像这样访问配置值:
configObject["L1a:L1a2a:L1a2a1"];
configObject["L1a:L2b"];
configObject["L1b"];
Run Code Online (Sandbox Code Playgroud)
使用环境变量覆盖顶级值很容易 - 只需使用相同的键名:
$env:L1b = "true"
Run Code Online (Sandbox Code Playgroud)
如何在 Powershell 中设置环境变量以覆盖嵌套配置文件值?
L1a:L1a2a:L1a2a1和L1a-L2b不是有效的环境变量名称。使用下划线之类的L1a_L2b不起作用。
我们有一个.NET应用程序(VB/VS2010),并在SQL Server 2008上调用许多存储过程以进行数据库查询.我们还有一些更新/插入/删除触发器,一旦这些存储过程修改数据库表就会自动执行.
通常情况下,调用存储过程并且它似乎执行正常,因为没有引发错误并且.NET应用程序像往常一样继续.但是,如果我查看封面并通过SQL Server客户端手动执行存储过程调用,我会看到在存储过程失败后立即执行的触发器,从而回滚所有更改.
所以我的问题是:在.NET应用程序中检测并传递错误的最佳方法是什么 - >存储过程 - >触发器方案,以确保在.NET应用程序中确保一切都成功或不出错?
非常感谢,史蒂夫
更新:我现在在家,离开我的办公桌(和代码库)周末,所以没有机会检查存储过程的细节.非常感谢到目前为止给出的答案.我可以在下周再看一下代码.
但在此期间......
一个问题是关于MS SQL Server的版本:它是2008年.
据我所知,我们以这种方式调用存储过程(至少那些不读取数据并"只是"更新,删除或插入数据的存储过程):
Using connection As New SqlConnection("connectionString")
Dim command As New SqlCommand("EXEC STORED_PROCEDUR_ENAME), connection)
command.Connection.Open()
command.ExecuteNonQuery()
End Using
Run Code Online (Sandbox Code Playgroud)
我认为上面代码背后的假设是期望如果某些内容在存储过程或相关触发器中失败,那么
command.ExecuteNonQuery()
Run Code Online (Sandbox Code Playgroud)
然后会失败.这可能是我的第一个问题,即我必须改变这段代码吗?下面的一个问题是如果我使用ExecuteDataReader,那么答案是否定的,至少目前为止......
我将在下面评论SQL特定的问题和建议.
EF7 migration add命令(迄今为止,beta5)将DbContext针对当前模型快照定义的模型类进行比较,创建新的迁移类,并更新模型快照.
我需要修改迁移,使其生成不同的DDL SQL.例如,EF7使用SQL Server自动增量值的序列,我希望它使用标识.然而,这可能是任何其他原因.该migration remove命令将物理删除迁移文件并还原模型快照,因此在这种情况下它是无用的.
有3个文件包含看起来需要编辑的相关代码:
Up和Down方法.DbContextModelSnapshot文件包含需要修改的注释[migration].Designer.cs文件还包含迁移的模型快照.我假设这个快照需要匹配第2项中的模型快照,但我不确定.我有关于它的目的的唯一信息来自Brice的博客,该博客说:"如果您或提供商需要在迁移过程中检查模型以获取更多信息,那就是存在的."具体问题: