作为数据库修订控制(和自动安装)过程的一部分,我们需要能够在 ASP 页面内对各种 .sql 文件运行 sqlcmd.exe。我用来执行此操作的代码是:
Dim cmd : cmd = "sqlcmd -S " & DATABASE_SERVER & " -U " & DATABASE_UID & " -P " & DATABASE_PWD & " -d " & DATABASE_NAME & " -i """ & scriptPath & """ -b"
Dim wshShell : Set wshShell = Server.CreateObject("WScript.Shell")
Dim return : return = wshShell.Run(cmd, 0, True)
Run Code Online (Sandbox Code Playgroud)
我的代码可以在我的开发机器(运行 XP)上运行,但现在我已将其部署到 Windows 2003 服务器上,但它遇到了问题。问题是返回值始终为 1。如果我尝试让它运行批处理文件或我能想到的其他任何文件,也会发生这种情况(如果我将 cmd 的值更改为不存在的文件,它会崩溃)正如我所期望的那样)
我尝试添加 I_USR 和 I_WAM 以对 sqlcmd.exe 和 cmd.exe 都具有执行权限,但它仍然返回 1。如果我在服务器上打开命令提示符并执行“runas /user:servername\i_usr sqlcmd.exe " 工作正常,但从 …
我们的核心产品的一部分是一个网站CMS,它使用各种页面小部件.这些小部件负责显示内容,列出产品,处理事件注册等.每个小部件由从基本小部件类派生的类表示.在呈现页面时,服务器从数据库中获取页面的小部件,然后创建正确类的实例.工厂方法对吗?
Private Function WidgetFactory(typeId)
Dim oWidget
Select Case typeId
Case widgetType.ContentBlock
Set oWidget = New ContentWidget
Case widgetType.Registration
Set oWidget = New RegistrationWidget
Case widgetType.DocumentList
Set oWidget = New DocumentListWidget
Case widgetType.DocumentDisplay
End Select
Set WidgetFactory = oWidget
End Function
Run Code Online (Sandbox Code Playgroud)
无论如何,这一切都很好,但随着时间的推移,小部件类型的数量增加到大约50,这意味着工厂方法相当长.每次我创建一个新类型的小部件时,我会在方法中添加另外几行,并且在我脑海中发出一点警报,这可能不是最好的做事方式.我倾向于忽略那个警报,但它越来越响亮.
那么,我做错了吗?有没有更好的方法来处理这种情况?
我们有一个很大的ASP经典代码库,但我希望在ASP.NET中进行未来的开发(并且可能在我们拥有的未来端口中).语言的自然选择似乎是VB(现有代码是VBScript),但我是否太仓促?从长远来看,语言的选择是否会产生影响?
我为自己创建了一个jQuery wee插件,负责显示,隐藏和提交表单以进行就地编辑.目前我在一个独立运作的页面上有几个,我很高兴.但是,我认为"全部编辑"可能很有用.因此,我希望能够访问页面中插件的所有实例并一致地访问它们的show/hide/validate/submit函数.有没有办法做到这一点?
我需要您的帮助为用户代理字符串创建IE特定的正则表达式.我的目标是获得正确的IE版本(包括IE11),并检查浏览器是否正在运行"Compat View".
所以,例如,我在正常模式下对IE9的期望结果:IE 9.0
和"Compat View"中的IE9:IE 9.0 CV
当不考虑compat视图时,此模式适用于高达IE 10:
MSIE ([0-9]{1,}[\.0-9]{0,})
但是,compat视图中的IE9将具有类似的用户代理字符串... MSIE 7.0 ... Trident/5.0.此外,IE11将MSIE在字符串中更长时间使用(参见下面的示例).
我不太了解正则表达式,所以我需要你对模式的帮助.虽然我认为三叉戟图案应该非常明显,/Trident\/\d/.
我将在C#中使用它,所以我想我需要做这样的事情(建议欢迎):
var regex = new Regex(@"MSIE ([0-9]{1,}[\.0-9]{0,})");
var match = regex.Match(Request.UserAgent);
if (match.Success)
//handle match.Groups
Run Code Online (Sandbox Code Playgroud)
一些可能有用的信息:
与IE8类似,IE9的兼容性视图将映射到IE7标准模式,而兼容性视图中的IE9的UA字符串将是:
Mozilla/4.0(兼容; MSIE 7.0; Windows NT 6.0; Trident/5.0)在兼容性视图中,IE9通过应用程序版本号(Mozilla/4.0)和版本令牌(MSIE 7.0)将自身报告为IE7.这样做是为了兼容性.从"Trident/4.0"到"Trident/5.0"的递增三叉戟令牌允许网站区分在Compat View中运行的IE9和在Compat View中运行的IE8.
Windows 7 IE11示例: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
c# ×2
.net ×1
asp-classic ×1
asp.net ×1
jquery ×1
regex ×1
sqlcmd ×1
user-agent ×1
vb.net ×1
webforms ×1