我有一个网页,每天,每月和每年有三个下拉菜单.如果我使用Date
带有数字的JavaScript 构造函数,那么我得到一个Date
当前时区的对象:
new Date(xiYear, xiMonth, xiDate)
Run Code Online (Sandbox Code Playgroud)
给出正确的日期,但由于夏令时,它认为日期是GMT + 01:00.
这里的问题是我然后将它传递Date
给Ajax方法,当日期在服务器上反序列化时,它已经转换为GMT,因此丢失了一个小时,将一天移回一.现在我可以将日,月和年单独传递到Ajax方法中,但似乎应该有更好的方法.
接受的答案指出了我正确的方向,但只是单独使用setUTCHours()
改变了:
Apr 5th 00:00 GMT+01:00
Run Code Online (Sandbox Code Playgroud)
至
Apr 4th 23:00 GMT+01:00
Run Code Online (Sandbox Code Playgroud)
然后我还必须设置UTC日期,月份和年份以结束
Apr 5th 01:00 GMT+01:00
Run Code Online (Sandbox Code Playgroud)
这就是我想要的.
更具体地说,我想测试是否在机器上安装了Oracle ODP.Net.我想通过测试HKLM\SOFTWARE\ORACLE\ODP.NET注册表项来完成此操作.
ODP.Net使用的实际值存储在HKLM\SOFTWARE\ORACLE\ODP.NET\2.111.6.20中,但是我假设这个较低级别的密钥名称将随着Oracle发布更新而更改.
我尝试了下面的失败,可能是因为(默认)值不存在或可能因为它是null(我不确定它在注册表中的确切表示).
<Property Id="ORACLE_ODPNET">
<RegistrySearch Id="ODPNET_RegKey" Type="raw" Root="HKLM" Key="SOFTWARE\ORACLE\ODP.NET" Name="(Default)"/>
</Property>
<Condition Message="This setup requires ODP.Net to be installed.">
Installed OR ORACLE_ODPNET
</Condition>
Run Code Online (Sandbox Code Playgroud)
所以以下任何一个对我都有帮助:
我有一个ASP.NET MVC网站,它使用Windows身份验证来控制访问.我希望有一个specflow selenium测试,通过尝试以非授权用户身份访问该站点来检查配置是否正确.
由于我们使用域帐户来控制访问权限,因此没有用户名/密码登录屏幕.浏览器会自动将当前用户的凭据传递给站点.
因此,对于我的Selenium测试,我需要能够以特定用户身份运行Internet Explorer.
我发现了一些关于Windows模拟的文章,我可以在运行测试期间切换到我的测试用户(使用http://support.microsoft.com/kb/306158中的代码).然而,如果我然后创建一个InternetExplorerDriver它使用我的凭据而不是测试用户启动Internet Explorer(尽管这个问题和答案表明它应该工作https://sqa.stackexchange.com/questions/2277/using-selenium-webdriver- with-windows-authentication).
我也可以明确地启动Internet Explorer进程作为我的测试用户,但是我看不到将InternetExplorerDriver绑定到已经运行的Internet Explorer进程的方法,所以这可能是一个死胡同.
我的代码基本上来自上面的MSDN页面.在调试器中,我可以看到WindowsIdentity.GetCurrent().Name在测试的所有步骤中都是"testUser".
namespace MyProject.Specs
{
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.IE;
using System;
using System.Runtime.InteropServices;
using System.Security.Principal;
using TechTalk.SpecFlow;
[Binding]
public class AuthorisationSteps
{
public const int LOGON32_LOGON_INTERACTIVE = 2;
public const int LOGON32_PROVIDER_DEFAULT = 0;
private static WindowsImpersonationContext impersonationContext;
private static IWebDriver driver;
[BeforeScenario]
public static void impersonateUser()
{
if (!impersonateValidUser("testUser", "testDomain", "password"))
{
throw new Exception();
}
driver = new InternetExplorerDriver();
}
[AfterScenario] …
Run Code Online (Sandbox Code Playgroud) asp.net-mvc selenium windows-authentication specflow selenium-webdriver
我想要做的是向安装程序用户显示其服务器上的网站列表,并允许他们选择一个(使用此处描述的方法:http://www.cmcrossroads.com/content/view/13160/120/,现在似乎已经破了,请看这里的核心代码).然后,安装程序将在所选网站中创建虚拟目录.
但是,我的搜索似乎表明,在WiX中指定网站的唯一方法是通过IP,端口和标头.要求这些不是非常用户友好,所以我留下了编写第二个自定义操作以从网站名称获取这些详细信息的想法.
有没有更好的办法?
BTW这需要在IIS6和IIS7中工作,以防影响答案.
我试图在Visual Studio代码中设置启动配置,以便我可以调试我的单元测试.
我的测试是用Typescript编写的.测试和他们测试的代码被编译成带有源映射的单个js文件.
通过下面的配置,我可以在js文件中设置断点,并使Visual Studio代码在停止时突出显示ts文件中的行.这表明源图在某种程度上起作用.但是,如果我在ts文件中放置一个断点,那么它将被忽略.
关于如何在ts文件中获取断点的任何想法都有效?
{
"version": "0.1.0",
// List of configurations. Add new configurations or edit existing ones.
// ONLY "node" and "mono" are supported, change "type" to switch.
"configurations": [
{
// Name of configuration; appears in the launch configuration drop down menu.
"name": "Unit tests",
// Type of configuration. Possible values: "node", "mono".
"type": "node",
// Workspace relative or absolute path to the program.
"program": "node_modules/jasmine/bin/jasmine.js",
// Automatically stop program after launch.
"stopOnEntry": false,
// Command …
Run Code Online (Sandbox Code Playgroud) 我在JavaScript中有以下正则表达式,它匹配"12:23:34:45"和"12:23"之类的字符串
/^([0-9]{1,2}\:){0,3}([0-9]{0,2})?$/
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我查看匹配数据时,只返回3个匹配项.例如,对于12:23:34:45,返回的比赛是:
12:23:34:45
34:
45
Run Code Online (Sandbox Code Playgroud)
即第一个捕获组仅报告其最后一个值.我希望比赛是:
12:23:34:45
12:
23:
34:
45
Run Code Online (Sandbox Code Playgroud)
这可能吗?
让我们说我有一种特殊的方式来决定某些字符串是否"匹配",如下所示:
public bool stringsMatch(string searchFor, string searchIn)
{
if (string.IsNullOrEmpty(searchFor))
{
return true;
}
return searchIn != null &&
(searchIn.Trim().ToLower().StartsWith(searchFor.Trim().ToLower()) ||
searchIn.Contains(" " + searchFor));
}
Run Code Online (Sandbox Code Playgroud)
我想使用Linq To Entities和这个帮助器从数据库中提取匹配项.但是,当我尝试这个:
IQueryable<Blah> blahs = query.Where(b => stringsMatch(searchText, b.Name);
Run Code Online (Sandbox Code Playgroud)
我得到"LINQ to Entities无法识别方法......"
如果我重新编写代码:
IQueryable<Blah> blahs = query.Where(b =>
string.IsNullOrEmpty(searchText) ||
(b.Name != null &&
(b.Name.Trim().ToLower().StartsWith(searchText.Trim().ToLower()) ||
b.Name.Contains(" " + searchText)));
Run Code Online (Sandbox Code Playgroud)
这在逻辑上是等价的,那么事情就可以了.问题是代码不是可读的,我必须为我想要匹配的每个不同实体重新编写代码.
至于我从这个问题中可以看出,我现在想做的事情是不可能的,但我希望我错过了什么,是吗?
希望这是一个非常简单的答案的问题,但这不是我能找到的问题.我有一个小的XML文档,看起来大致如下:
<aa>
<bb><name>bb1</name></bb>
<bb><name>bb2</name></bb>
<bb><name>bb3</name></bb>
</aa>
Run Code Online (Sandbox Code Playgroud)
我有代表aa和bb的类
[XmlRoot("aa")]
public class aa
{
[XmlArray("bbs")]
[XmlArrayItem("bb")]
public bb[] bbs;
}
public class bb
{
[XmlElement("name")]
public string Name;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用XmlSerializer反序列化文档时,我得到一个具有null bbs属性的对象.据我所知,这是因为我在bbs属性上使用的属性告诉序列化程序期望这样的文档:
<aa>
<bbs>
<bb><name>bb1</name></bb>
<bb><name>bb2</name></bb>
<bb><name>bb3</name></bb>
</bbs>
</aa>
Run Code Online (Sandbox Code Playgroud)
鉴于我无法更改我收到的XML的格式,有没有办法告诉XmlSerialiser期望一个未包含在另一个标记内的数组?
我有一个经典的ASP页面,我试图在Windows 7上的IIS上进行调试.该页面在另一台运行不同网络上的Windows Server 2003的计算机上正常工作.此外,在Windows 7计算机上,我可以在浏览器中成功打开相关URL.
执行带有错误的ServerXMLHTTP.send()时页面失败:
msxml3.dll error '80072efd'
A connection with the server could not be established
Run Code Online (Sandbox Code Playgroud)
有问题的代码看起来像这样(最后一行失败):
set xmlHTTP = server.CreateObject("MSXML2.ServerXMLHTTP")
xmlHTTP.open "get", "http://stackoverflow.com", False
xmlHTTP.send
Run Code Online (Sandbox Code Playgroud)
我一直在搜索,最有帮助的建议是使用NetSh为winHTTP设置代理.有问题的机器在使用代理服务器的网络上.但是,即使在设置代理并重新启动后,我仍然会得到相同的错误.
更改
set xmlHTTP = server.CreateObject("MSXML2.ServerXMLHTTP")
Run Code Online (Sandbox Code Playgroud)
至
set xmlHTTP = server.CreateObject("MSXML2.XMLHTTP")
Run Code Online (Sandbox Code Playgroud)
产生略有不同的错误:
msxml3.dll error '800c0005'
The system cannot locate the resource specified.
Run Code Online (Sandbox Code Playgroud)
我还尝试安装MSXML4 SP3并使用以下方法显式创建v4对象:
set xmlHTTP = server.CreateObject("MSXML2.ServerXMLHTTP.4.0")
Run Code Online (Sandbox Code Playgroud)
我仍然得到相同的错误,除了消息中的msxml4.dll.
最后,我尝试关闭我的Forefront TMG代理客户端,告诉我的浏览器不要使用代理,并使用netsh重置winHTTP的代理.即使浏览器仍然可以访问互联网,仍然会出现相同的错误.
从我发现的情况来看,我认为这必须是这个特定机器通过它所在的特定网络连接的问题.但是,我不知道问题是什么.任何建议都感激不尽.
我有一个设置返回自定义ObjectMapper的类。据我所知,让Spring Boot使用此ObjectMapper的正确方法是将其声明为@Primary。
@Configuration
public class MyJacksonConfiguration {
@Bean
@Primary
public ObjectMapper objectMapper() {
return Jackson2ObjectMapperBuilder
.json()
.findModulesViaServiceLoader(true)
.mixIn(Throwable.class, ThrowableMixin.class)
.featuresToDisable(
WRITE_DATES_AS_TIMESTAMPS)
.serializationInclusion(
Include.NON_ABSENT)
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我从控制器方法返回对象时,它将使用默认的Jackson ObjectMapper配置进行序列化。
如果我在控制器上添加一个显式的ObjectMapper并调用writeValueAsString,则可以看到该ObjectMapper是我希望Spring Boot使用的自定义对象。
@RestController
public class TestController {
@Autowired
private TestService service;
@Autowired
private ObjectMapper mapper;
@GetMapping(value = "/test", produces = "application/json")
public TestResult getResult() {
final TestResult ret = service.getResult();
String test = "";
try {
test = mapper.writeValueAsString(ret);
// test now contains the value I'd like returned by the controller!
} …
Run Code Online (Sandbox Code Playgroud) 编辑:我已经更新了下面的代码,现在它可以运行了,感谢Rob的回答.
我发现了几个页面,显示如何做到这一点(http://www.cmcrossroads.com/content/view/13160/120/,http://www.mail-archive.com/wix-users@ lists.sourceforge.net/msg05103.html)并查看了WAI的源代码(http://wai.codeplex.com/),但无论我尝试什么,我似乎都无法在我的安装程序中使用它.如果有人能发现我做错了什么,我会非常感激.我对话的WiX片段如下所示:
<UI>
<Dialog>
...snip...
<Control Id="WebsiteName" Type="ComboBox" ComboList="yes" Sorted="yes" Property="IIS_WEBSITENAME" X="20" Y="73" Width="150" Height="17"/>
...snip...
<!-- We want our custom action to fill in the WebsiteName ComboBox above
however, if no ComboBox entries exist at compile time then the
ComboBox table is not created in the MSI and we can't add to it in
the custom action. So we have this hidden dummy list box to force
the table to appear. --> …
Run Code Online (Sandbox Code Playgroud) 我对KnockoutJs很新,所以我希望这种情况有一个众所周知的最佳实践,我一直无法找到.
我有一个包含一系列项目的视图模型.我想使用模板显示这些项目.我还希望每个项目都能够在视图和编辑模式之间切换.我认为最适合Knockout的是在主视图模型上创建相关函数,或者(可能更好)在数组中的每个项目上创建相关函数,然后在模板中绑定此函数.所以我在我的页面上创建了这个代码:
<ul data-bind="template: {name: testTemplate, foreach: items}"></ul>
<script id="testTemplate" type="text/x-jquery-tmpl">
<li>
<img src="icon.png" data-bind="click: displayEditView" />
<span data-bind="text: GBPAmount"></span>
<input type="text" data-bind="value: GBPAmount" />
</li>
</script>
<script>
(function() {
var viewModel = new TestViewModel(myItems);
ko.applyBindings(viewModel);
})();
</script>
Run Code Online (Sandbox Code Playgroud)
这是一个单独的文件:
function TestViewModel(itemsJson) {
this.items = ko.mapping.fromJS(itemsJson);
for(i = 0; i < this.items.length; ++i) {
this.items[i].displayEditView = function () {
alert("payment function called");
}
}
this.displayEditView = function () {
alert("viewmodel function called");
}
};
Run Code Online (Sandbox Code Playgroud)
由于我运行的JS环境,我无法向全局命名空间添加任何内容,因此创建和设置视图模型的匿名函数.(如果有必要,我可以添加一些命名空间.)这个限制似乎打破了我发现的所有示例,它们似乎依赖于全局的viewModel变量.
PS如果有一种方法比我想做的更适合knockoutJS,请随时提出建议!
我创建了一个实现 IModelBinder 的自定义模型绑定器,并希望使用属性将其应用到我的视图模型。例如:
namespace TestWebApp.Models
{
public class ExperimentalViewModel
{
[ModelBinder(typeof(MandatoryIntBinder))]
public int MandatoryInt { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
这样做的原因是,如果模型绑定失败,我可以返回自己的错误消息。为了很好地做到这一点,我想为绑定到正在使用的 MandatoryIntBinder 实例的字段传递一个友好的名称。就像是:
[ModelBinderWithParameters(typeof(MandatoryIntBinder), "Test mandatory int")]
Run Code Online (Sandbox Code Playgroud)
那可能吗?
生成自定义模型绑定错误的更好方法对我来说也是一个很好的解决方案。
javascript ×3
wix ×3
wix3 ×3
c# ×2
iis-7 ×2
asp-classic ×1
asp.net-mvc ×1
combobox ×1
iis ×1
iis-6 ×1
jackson2 ×1
knockout.js ×1
msxml ×1
odp.net ×1
oracle ×1
regex ×1
selenium ×1
specflow ×1
spring-boot ×1
timezone ×1
typescript ×1