小编jam*_*mus的帖子

如何从 ASP 页运行 sqlcmd.exe?

作为数据库修订控制(和自动安装)过程的一部分,我们需要能够在 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 " 工作正常,但从 …

sqlcmd windows-server-2003 asp-classic

5
推荐指数
1
解决办法
3093
查看次数

我用我的工厂方法过度了吗?

我们的核心产品的一部分是一个网站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,这意味着工厂方法相当长.每次我创建一个新类型的小部件时,我会在方法中添加另外几行,并且在我脑海中发出一点警报,这可能不是最好的做事方式.我倾向于忽略那个警报,但它越来越响亮.

那么,我做错了吗?有没有更好的方法来处理这种情况?

language-agnostic design-patterns factory-method

5
推荐指数
2
解决办法
528
查看次数

转到ASP.NET - VB或C#?

我们有一个很大的ASP经典代码库,但我希望在ASP.NET中进行未来的开发(并且可能在我们拥有的未来端口中).语言的自然选择似乎是VB(现有代码是VBScript),但我是否太仓促?从长远来看,语言的选择是否会产生影响?

.net c# vb.net asp.net webforms

3
推荐指数
3
解决办法
3555
查看次数

如何使用jQuery查找插件的所有实例?

我为自己创建了一个jQuery wee插件,负责显示,隐藏和提交表单以进行就地编辑.目前我在一个独立运作的页面上有几个,我很高兴.但是,我认为"全部编辑"可能很有用.因此,我希望能够访问页面中插件的所有实例并一致地访问它们的show/hide/validate/submit函数.有没有办法做到这一点?

jquery

2
推荐指数
1
解决办法
1748
查看次数

IE用户代理regexp(inclidung IE11和compat视图)

我需要您的帮助为用户代理字符串创建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)

一些可能有用的信息:

IE9的用户代理字符串:

与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.

IE11的用户代理字符串:

Windows 7 IE11示例: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko

类似有用的线程

c# regex internet-explorer user-agent

2
推荐指数
1
解决办法
8047
查看次数