假设我们有一个持续集成服务器.当我签入时,post-hook会提取最新代码,运行测试,打包所有内容.什么是自动化数据库更改的最佳方法?
理想情况下,我构建一个安装程序,可以从头开始构建数据库,也可以使用一些自动同步方法更新现有数据库.
我有一个文件名,比如"Foo.dll",我知道这个库位于bin目录中.我想为它创建一个Assembly对象.我试图从一个不是页面的类中实例化这个对象,所以我没有Request对象来获取路径.如何获得使用Assembly.Load()所需的路径?
在使用它之前,我想在基页类中检查Session是否存在,但是我发现如果它不存在,它只会通过检查抛出异常:
if (Session != null)
{
Session.Remove("foo");
}
Run Code Online (Sandbox Code Playgroud)
将抛出此异常:
只有在配置文件或Page指令中将enableSessionState设置为true时,才能使用会话状态.还请确保System.Web.SessionStateModule或自定义会话状态模块包含在应用程序配置的\\部分中.
检查发生在我的所有aspx页面派生的基页类的Load事件中.该应用程序启用了会话,并且它具有httpModules节点中列出的模块.这是一个经常使用会话的应用程序,通常没有问题.
我只在某些页面上出现此错误,而且大部分时间都不可靠.我知道我应该做一些不同的事情以防止错误,但我不确定是什么?
我可能在生命周期中过早地召集会议吗?我没有正确检查会话是否可用?
简单地说,如果我有一个带有SqlDataSource控制声明集的GridView作为其数据源,那么该数据源何时检索其数据以及何时绑定发生在页面生命周期中?
我有一个继承自Page的基页类.我们称之为SpiffyPage.
我还有一个名为SpiffyControl的用户控件.
然后我有一个aspx页面,ViewSpiffyStuff.aspx,继承自SpiffyPage.
在页面加载时,SpiffyPage类应该将SpiffyControl注入到aspx页面中.
问题是SpiffyControl是一个用户控件,并且实例化后面的代码必须访问ASP命名空间,类似于:
ASP.controls_spiffycontrol_aspx MyControl;
Run Code Online (Sandbox Code Playgroud)
但是SpiffyPage不是aspx页面,它只是一个基页,因此我无法访问ASP命名空间,因此我无法实例化SpiffyControl以便注入它.
我怎样才能实现目标?
编辑:
一个重点是我必须引用实际的控件类型,以便我可以为某些自定义属性赋值.这就是为什么像LoadControl这样返回类型Control的函数在这种情况下不起作用.
我有一个小的SQL Server数据库,我需要在命令上复制 - 我需要能够在任何给定的时刻获取mfd和ldf文件,复制它们,压缩它们,并使它们可供最终用户使用.
现在可以通过手动实现:
1)通过远程桌面登录SQL服务器
2)通过SQL Management Studio分离数据库.我必须通过将数据库设置为single_user和/或重新启动服务来解决这个问题,因此我可以将其分离,因为应用服务器通常会登录到它.
3)在分离时,我通过文件系统并复制mdf和ldf文件.
4)我通过SQL Management Studio重新附加数据库
5)我压缩复制的文件,然后将它们移动到FTP服务器,以便需要它们的人可以获取它们.
这是一个可怕的,低效的过程.这不仅仅是需要架构的问题,而是需要人们在他们自己的本地机器上处理真实的生产数据的快照,以进行破坏性的实验.幸运的是,压缩数据库非常小 - 可能有30兆的日志.
理想情况下,我想在ASP .NET Web应用程序中创建一个页面,该页面有一个按钮,用户可以按下该按钮以启动将当前数据库打包成zip文件,然后我只提供指向文件下载.
在给定分配给其SelectCommand属性的存储过程的名称的情况下,是否有一种从SqlDataSource获取预期参数列表的合理方法?
我有一些C#代码看起来像这样:
uint a = 0x9E3779B9;
a += (uint)(url[k + 0] + (url[k + 1] << 8) + (url[k + 2] << 16) + (url[k + 3] << 24));
Run Code Online (Sandbox Code Playgroud)
在那段代码之后,a == 228 452 386
现在我正在尝试将此C#代码转换为PHP,但在PHP中,数字不会以相同的方式溢出:
$a = 0x9E3779B9;
$a += ($url[$k+0] + ($url[$k+1] << 8) + ($url[$k+2] << 16) + ($url[$k+3] << 24));
Run Code Online (Sandbox Code Playgroud)
在那段代码之后,$ a == 4 523 419 682
在两个coses中,"url"被视为ascii值的数组.返回相同的结果,直到$ a被添加到第二行的结果.那时C#uint溢出到2.28亿.PHP变得"聪明"并提出了"正确"的答案.
但我想要C#给出的溢出答案.我该怎么办?
我在我的MVC4 Web应用程序中有一些控制器操作,它们使用Response对象来访问查询字符串变量等.抽象的最佳做法是什么,因此它不会干扰单元测试操作?
我使用Application_Error事件捕获并记录我的应用程序中的错误。记录错误,然后显示友好的错误屏幕:
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim ex As New Exception( _
String.Format("Error on page: '{0}'.", HttpContext.Current.Request.Url), _
Server.GetLastError())
Dim uid As Guid = Log.FatalError(ex)
Server.Transfer(String.Concat("~\\GlobalError.aspx?error=", uid))
End Sub
Run Code Online (Sandbox Code Playgroud)
在我的web.config中,我有:
<customErrors mode="On" defaultRedirect="GlobalError.aspx">
<error statusCode="404" redirect="PageNotFound.aspx" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)
每当用户尝试加载不存在的页面时,他们都会获得GlobalError.aspx页面,而不是PageNotFound.aspx页面。我查看了Application_Error事件,发现Response StatusCode为200,而服务器的最后一个错误是“找不到页面'foo.aspx'”。
我需要怎么做才能使其正常工作?
我一直在遇到这个设计问题,到目前为止我对我的解决方案不满意.问题是这样的:
我有两个或更多实体,比如People和Dogs,它们都与Notes表有关系,它存储消息字段和一些关于消息的元数据,例如作者.
1)第一种选择是不强制执行外键.这样我可以像fkId一样在fk字段中存储类似peopleId或dogId(无论它是什么)的FK.然后我将tableId存储在另一列中 - 可以希望从RDMS元数据中获取表id,但是你也可能有一个脏的hack并明确地创建一个表,你必须手动更新表.这真是草率,我只是提到它的完整性.
2)为每个需要它的表克隆Notes表,如PeopleNotes,DogNotes,CatNotes等.这会产生一个非常重要的规范化问题.
在这样的情况下,其他人做了什么?
我有一个包含 id、a 和 b 列的表。
a+b 应该是唯一的,但这是一个未正确约束的遗留数据库。如何获取 a+b 不唯一的记录的一组 id?
如果我有
ID A B
1 2 3
2 2 3
3 1 3
4 1 4
Run Code Online (Sandbox Code Playgroud)
然后我想从查询中获取记录 1 和 2。
asp.net ×6
c# ×5
sql-server ×4
.net ×3
vb.net ×2
asp.net-mvc ×1
data-binding ×1
database ×1
dll ×1
events ×1
overflow ×1
php ×1
relational ×1
session ×1
t-sql ×1
uint ×1
uint32 ×1
web-config ×1