我最近继承了一个庞大的webapp,它是JSP,Javascript和Java的组合.它仅适用于IE,因为它使用xml数据岛进行编码,以及阻止其他浏览器顺利运行的其他因素.一直很好,直到几天用于IE9/10的IE7/10在应用程序中遇到一些javascript问题的用户.例如,以下数据岛是我的html页面的片段.
<xml id = "underlyingdata" ondatasetcomplete="window.dialogArguments.parent.repopulateDropDown(this, underlyingdd)">
</xml>
<xml id="termdata" ondatasetcomplete="window.dialogArguments.parent.repopulateDropDown(this, termdd)">
</xml>
Run Code Online (Sandbox Code Playgroud)
在此页面上还有另一行代码
window.dialogArguments.parent.request(underlyingdata, "CONTRACT.LIST.WB", "PULP AND PAPER|" + instrumentdd.options[instrumentdd.selectedIndex].text);
Run Code Online (Sandbox Code Playgroud)
调用如下函数
function request(xmldataisland, requestmethod, parameters
{
var screwcache=Math.round(Math.random()*10000);
xmldataisland.value=null;
xmldataisland.load("/webaccess/Request?sessionid=" + sessionid + "&request=" + requestmethod + "¶meters=" + parameters+"&screwcache="+screwcache);
}
Run Code Online (Sandbox Code Playgroud)
这在IE9/10中失败,错误是'load'不是'xmldataisland'对象上的有效方法(脚本438错误),而它在IE 5到IE 8上完全正常.
我相信上面函数中的xmldataisland对象是XMLDocument类型.为什么加载方法失败?这是什么解决方法?我从许多消息来源读到并听到使用数据岛是一个糟糕的主意.在这种情况下,什么是正确的替代方案?
我有一个Windows服务,需要监视目录中的文件,然后将其移动到另一个目录.我正在使用FileSystemWatcher来实现它.
这是我的主要服务类.
public partial class SqlProcessService : ServiceBase
{
public SqlProcessService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
FileProcesser fp = new FileProcesser(ConfigurationManager.AppSettings["FromPath"]);
fp.Watch();
}
protected override void OnStop()
{
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的FileProcessor类
public class FileProcesser
{
FileSystemWatcher watcher;
string directoryToWatch;
public FileProcesser(string path)
{
this.watcher = new FileSystemWatcher();
this.directoryToWatch = path;
}
public void Watch()
{
watcher.Path = directoryToWatch;
watcher.NotifyFilter = NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName;
watcher.Filter = "*.*";
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += …Run Code Online (Sandbox Code Playgroud) 我有一个用于批量复制到 SQL 服务器数据库的数据表:我将其列定义如下:
dt.Columns.Add("BaseID", typeof(Int32));
dt.Columns.Add("ContractID", typeof(DateTime));
dt.Columns.Add("TermID",typeof(Int32));
dt.Columns.Add("Price",typeof(Decimal));
dt.Columns.Add("PeakType",typeof(String));
Run Code Online (Sandbox Code Playgroud)
现在 PeakType 列实际上可能是一个字符串,也可能是空值。因此,当我向数据表中添加行时,我会这样做。
DataRow row = dt.NewRow();
row["BaseID"] = baseID;
row["ContractDate"] = contractDate;
row["TermID"] = termID;
row["Price"] = price;
row["PeakType"] = peakType; //How would I assign If I want to assign DBNull?
Run Code Online (Sandbox Code Playgroud)
如果 peakType 为空,我如何指定 DBNull.Value 以便我的批量复制可以在 SQL 服务器表的列中正确插入一个空值
我试图通过HKCU\Keyboard Layout\Preload\1从我的应用程序中读取来获取当前用户最后使用的键盘布局。每次在控制面板中更改默认键盘时,我都可以看到上述位置的值发生变化(我可以通过打开 RegEdit 来看到这一点)。但由于某种原因,我的应用程序仍然读取旧值,而不考虑我可以在 RegEdit 上看到的最新刷新。
string KeyboardLayoutRegKey = "Keyboard Layout\\Preload";
pLastUsedKeyboard = RegistryAccessor.CurrentUser.OpenSubKey(KeyboardLayoutRegKey).GetValue("1").ToString(),
Run Code Online (Sandbox Code Playgroud)
当我将值从美国英语更改为法语时,注册表中的十六进制值从 409 更改为 40c,我可以在 RegEdit 中看到这一点,但我的应用程序仍然将其读取为 409,直到我重新启动?为什么要这样做?我的应用程序针对的是 AnyCPU。
编辑
/// <summary>
/// Provides access to the registry.
/// </summary>
public class RegistryAccessor : IRegistryAccessor
{
/// <summary>
/// Contains information about the current user preferences. This field reads the Windows registry base key HKEY_CURRENT_USER.
/// </summary>
public IRegistryKey CurrentUser
{
get
{
return new RegistryKeyWrapper(Registry.CurrentUser);
}
}
/// <summary>
/// Contains the configuration data …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用gRPC在工作中构建PoC。此处的google文档为我们提供了一个示例应用程序。我想知道protobuf-net(尤其是protogen)是否有能力理解执行gRPC调用所需的服务定义和类?还是正在处理某些问题?如果我将google的protoc用于客户端和服务器代码生成(涉及服务定义和RPC调用),并将protobuf-net用于我的业务对象,是否可以使用?