小编Sai*_*Sai的帖子

xml数据岛的解决方法

我最近继承了一个庞大的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 + "&parameters=" + parameters+"&screwcache="+screwcache);

}
Run Code Online (Sandbox Code Playgroud)

这在IE9/10中失败,错误是'load'不是'xmldataisland'对象上的有效方法(脚本438错误),而它在IE 5到IE 8上完全正常.

我相信上面函数中的xmldataisland对象是XMLDocument类型.为什么加载方法失败?这是什么解决方法?我从许多消息来源读到并听到使用数据岛是一个糟糕的主意.在这种情况下,什么是正确的替代方案?

html javascript xml

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

在Windows服务中使用FileSystemWatcher

我有一个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)

c# windows-services filesystemwatcher

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

在批量复制之前将 DBNull 值插入到 DataTable 列

我有一个用于批量复制到 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 服务器表的列中正确插入一个空值

c# sql-server datatable

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

注册表项 getvalue 未获取最新值

我试图通过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)

c#

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

在gRPC中使用ProtoBuf-net

我正在尝试使用gRPC在工作中构建PoC。此处的google文档为我们提供了一个示例应用程序。我想知道protobuf-net(尤其是protogen)是否有能力理解执行gRPC调用所需的服务定义和类?还是正在处理某些问题?如果我将google的protoc用于客户端和服务器代码生成(涉及服务定义和RPC调用),并将protobuf-net用于我的业务对象,是否可以使用?

protocol-buffers protobuf-net protogen

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