小编Joe*_*ech的帖子

如何在单个命令中获取没有尾部反斜杠的批处理脚本的路径?

假设我希望从批处理脚本本身获取批处理脚本的绝对路径,但没有尾部反斜杠.通常,我这样做:

SET BuildDir=%~dp0
SET BuildDir=%BuildDir:~0,-1%
Run Code Online (Sandbox Code Playgroud)

第一个语句获取带有反斜杠的路径,第二个行删除最后一个字符,即反斜杠.有没有办法将这两个语句组合成一行代码?

command-line batch-file

32
推荐指数
2
解决办法
2万
查看次数

Web.config中的enableClientBasedCulture属性是否可用?

搜索网络时,我看到很多实例在全球化部分使用以下属性组合:culture ="auto",uiCulture ="auto",enableClientBasedCulture ="true",例如:

<globalization uiCulture="auto" culture="auto" requestEncoding="utf-8" responseEncoding="utf-8" enableClientBasedCulture="true"/>
Run Code Online (Sandbox Code Playgroud)

文档说:http://msdn.microsoft.com/en-us/library/system.web.configuration.globalizationsection.enableclientbasedculture(v=VS.90).aspx

启用EnableClientBasedCulture属性后,Culture和UICulture属性基于客户端浏览器发送的AcceptLanguage标头字段值.如果AcceptLanguage标头值无法映射到特定区域性,则使用Culture和UICulture值.默认值为false.

对于culture和uiCulture属性,"auto"应该是指http://msdn.microsoft.com/en-us/library/bz9tc508(v=VS.90).aspx

要让ASP.NET将UI文化和文化设置为当前浏览器设置中指定的第一种语言,请将UICulture和Culture设置为auto.或者,您可以将此值设置为auto:culture_info_name,其中culture_info_name是区域性名称.有关文化名称的列表,请参阅CultureInfo.您可以在@ Page指令或Web.config文件中进行此设置.

假设浏览器在AcceptLanguage标头字段值中发送无效或无文化名称.因为enableClientBasedCulture ="true",应用程序服务器应该尝试使用AcceptLanguage头字段中的任何内容,但是如果文化名称无效,则无法执行此操作并返回culture ="auto"和uiCulture ="auto ",但自动/自动设置本身将无法使用无效数据.

现在假设我们确实向服务器发送了一个有效的文化名称,例如"de-DE".仍然告诉应用程序服务器使用AcceptLanguage头字段值,因为enableClientBasedCulture ="true",但由于culture和uiCulture设置为"auto",他们无论如何都会使用该值.

我的第一个问题是:将auto/auto与true结合起来有什么意义?我自己的信念是,如果culture ="auto"和uiCulture ="auto",使用enableClientBasedCulture ="true"将是多余的.我自己的测试表明,auto和auto的工作方式与在与enableClientBasedCulture属性结合使用时一样,但是当我看到web上的许多示例中都提到了auto/auto/true组合时,我想知道是否我忽略了一些东西.

我尝试过使用enableClientBasedCulture ="true"而没有自动/自动设置,例如

<globalization requestEncoding="utf-8" responseEncoding="utf-8" enableClientBasedCulture="true"/>
Run Code Online (Sandbox Code Playgroud)

这似乎根本不起作用; 似乎客户端强制提供服务器的culture和uiCulture设置,即使enableClientBasedCulture ="true"应该(隐式地)将这些属性设置为AcceptLanguage头字段值的属性.

然后我尝试将enableClientBasedCulture与文化和uiCulture的特定文化相结合,例如

<globalization uiCulture="da-DK" culture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8" enableClientBasedCulture="true"/>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,无论语言设置如何,客户端浏览器都被迫使用"da-DK".

看看http://msdn.microsoft.com/en-us/library/hy4kkhe0(v=VS.90).aspx我看到这个for enableClientBasedCulture:

此属性目前尚未使用.

使用.NET Reflector,我已经反编译了所有.NET 3.5 Framework程序集并搜索了enabledClientBasedCulture.我在System.Web.Configuration\GlobalizationSection中找到了一些代码,它们读取值并通过属性使其可用,但是对它没有任何作用.

在Hosting\HostingEnvironment中,我找到一个名为SetCultures的方法,它从GlobalizationSection参数中获取culture和uiCulture值,但我还没有找到任何使用enableClientBasedCulture属性的代码.

所以我的第二个问题是:enableClientBasedCulture属性是否实际上在任何地方都被使用,如果是这样,我应该如何配置测试程序以证明它有任何影响?

.net asp.net

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

如何从作为msi安装后任务运行的VBScript读取64位注册表值?

我需要从使用Visual Studio 2008部署项目创建的安装程序中的VBScript中读取Temporary ASP.NET Files文件夹的位置,作为安装后任务的一部分.

我以为我会这样做:

Set oShell = CreateObject("Wscript.Shell")
strPath = oShell.RegRead("HKLM\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0\Path")
Run Code Online (Sandbox Code Playgroud)

然后将strPath与"\ Temporary ASP.NET Files"连接起来并完成它.

但是,在x64系统上,我从WOW6432Node(HKLM\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\2.0.50727.0)获取值,它为我提供了32位框架路径(C:\ Windows\Microsoft. NET\Framework\v2.0.50727),但在x64系统上,我实际上需要64位路径,即C:\ Windows\Microsoft.NET\Framework64\v2.0.50727.

我知道这是因为.vbs文件是使用32位脚本主机运行的,因为父进程(安装程序)本身就是32位.

如何使用64位脚本主机运行脚本 - 或者 - 即使脚本使用32位脚本主机运行,如何读取64位值?

registry vbscript 64-bit windows-installer

7
推荐指数
1
解决办法
3万
查看次数

将程序集编译为x64有什么好处吗?

假设我有一个.Net Framework 3.5 SP1/CLR 2.0应用程序,它需要在x86和x64平台上运行.假设无论出于何种原因,我还需要创建单独的x86和x64安装程序.

因为我还有一个特定于x64的安装程序,将应用程序本身重新编译为x64而不是以"AnyCPU"为目标会有什么好处吗?

除了生成的程序集的头信息之外,将目标设置为x64是否会改变任何内容?

.net 64-bit x86 compilation

6
推荐指数
1
解决办法
1132
查看次数

如何在Oracle中将NUMBER转换为VARCHAR2?

我有一些P-SQL语法的问题.我已将代码示例减少到最低限度.

以下作品:

CREATE OR REPLACE FUNCTION MyFunction(LINE_ID SMALLINT)
RETURN VARCHAR2 IS
    tmp VARCHAR2(4000);
BEGIN
    tmp := CAST(LINE_ID AS VARCHAR2);
    RETURN(tmp);
END MyFunction;
/
Run Code Online (Sandbox Code Playgroud)

但是,我需要将LINE_ID参数更改为NUMBER(5,0),之后以下操作无效:

CREATE OR REPLACE FUNCTION MyFunction2(LINE_ID NUMBER(5, 0))
RETURN VARCHAR2 IS
    tmp VARCHAR2(4000);
BEGIN
    tmp := CAST(LINE_ID AS VARCHAR2);
    RETURN(tmp);
END MyFunction2;
/
Run Code Online (Sandbox Code Playgroud)

Oracle SQL Developer 3.2.10.09中的错误消息是

错误(1,36):PLS-00103:遇到符号"("当期望下列之一:: =.),@%默认字符符号":="代替"("继续.

我应该怎么写的CAST声明,以使其与合作NUMBER(5, 0),而不是SMALLINT

同样,这不是原始代码,但我正在寻找一种解决方案,它不会偏离第二个版本太多,最好也不是另一个函数调用.在VARCHAR2返回类型也很重要.

sql oracle plsql casting

6
推荐指数
2
解决办法
9万
查看次数

用户是否对Temporary ASP.NET Files文件夹写入权限会造成任何安全问题?

由于对Temporary ASP.NET Files文件夹的权限不足,我遇到程序集绑定失败.

该应用程序使用(web.config)表单身份验证与Impersonate = True和IIS Windows集成身份验证.

根据ASP.NET Identity Matrix,这意味着WindowsIdentity解析为Domain\UserName,并且根据ASP.NET必需的访问控制列表(ACL),WindowsIdentity需要对Temporary ASP.NET Files文件夹的读/写权限.

使用Fusion日志查看器,我可以确认程序集绑定失败是由于Domain\UserName(属于安全性中的"Users"组)只对该文件夹具有读取权限,而不是写入权限.

问题是:

为临时ASP.Net Files文件夹分配写权限是否有任何安全隐患?

这种服务器配置变化是常用的吗?如果没有,为什么WindowsIdentity会针对此web.config设置组合解析为Domain\UserName - 或者是否应该在此上下文中使用此组合?

注意:仅当非管理员用户是第一个访问该页面的用户时,才会出现此问题.如果由于管理员用户访问页面而已将程序集编译并存储在临时ASP.NET文件中,则后续用户不会遇到任何问题.我不希望将程序集放在GAC中.

asp.net security

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

DOCTYPE的选择是否会影响javascript代码所见的DOM?

鉴于使用ASP.NET,javascript,css等技术的大型遗留项目,我想知道是否以任何方式将网页的DOCTYPE从HTML 4.0 Transitional更改为XHTML 1.0 Transitional(或其他方式)可以打破网页的javascript功能.

关于不同的DOCTYPES如何影响页面的(css)呈现,有很多文章和讨论,但我似乎无法找到任何类似的破坏任何代码的主题.

我正在寻找关于一般需要注意的事项的文章的链接,以便更好地发现现有代码中的潜在问题,并避免在编写新代码时产生问题.

javascript doctype dom

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

如何检查是否已安装IIS 6管理兼容性功能?

使用VB.NET,C#或VBScript,如何检查运行IIS 7.x的计算机上是否已安装IIS 6管理兼容性功能及其子功能?

c# vb.net iis vbscript iis-7

4
推荐指数
1
解决办法
6406
查看次数

当页面是框架集的一部分并垂直调整大小时,在IE7中不会触发正文onresize事件

我有一个简单的框架集,垂直有两个框架,即两行:

第一行包含固定标头.

第二行包含顶部的固定工具栏,底部包含可调整大小的工具栏.

由于浏览器之间的渲染差异,我不能只为"内容"框架启用滚动,因为这意味着整个框架(包括工具栏)将在某些浏览器中滚动,而只有底部的可调整大小部分才能获得滚动条在其他浏览器中(这是我想要的).下面的示例中缺少用于控制容器和toolbarContainer元素的css,但现在这不相关.

问题是:给定下面的示例代码,如果我在使用IE7(在IE7兼容模式下的IE8,但纯IE7表现出同样的问题时)垂直调整浏览器窗口时,我没有得到body元素的onresize事件.在我尝试过的所有其他浏览器中,我确实得到了onresize事件,如果我横向调整浏览器窗口大小,我也会在IE7中获得该事件.

在这种情况下,IE7和onresize事件是否存在已知问题?

注1:我知道我应该完全摆脱框架集,但现在这不是一个选择.

注2:我搜索了有关此主题的信息,但由于问题似乎只出现在IE7和框架上下文中,因此现在不太可能影响太多的开发人员.

index.htm的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Resize Test</title>
    </head>
    <frameset rows="104,*" framespacing="0" frameborder="no">
        <frame src="header.htm" name="header" frameborder="0" noresize="noresize" scrolling="no" marginheight="0" marginwidth="0" />
        <frame src="content.htm" name="content" frameborder="0"  marginheight="0" marginwidth="0" scrolling="no" />
    </frameset>
</html>
Run Code Online (Sandbox Code Playgroud)

header.htm:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Header</title>

        <style type="text/css" media="all">
              body { margin: 0px;
                     padding: 0px;
                     width: 100%;
                     height: 104px;
                   }
        </style>
    </head>

    <body>
        <img alt="" width="699" height="104" …
Run Code Online (Sandbox Code Playgroud)

html javascript frameset internet-explorer-7

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