小编Jac*_*yan的帖子

使用Visual Source Safe命令行应用程序SS.exe获取用户签出的所有文件

我们目前使用VSS 6,这恐怕不会改变.

我正在尝试编写一个脚本,允许用户快速将他们签出的所有文件复制到另一个目录树.为了做到这一点,我需要获取用户已检出的所有文件的列表,以及检出文件的目录.这很容易在GUI中使用状态搜索.但我需要一种从命令行实用程序ss.exe执行此操作的方法.

visual-sourcesafe visual-sourcesafe-2005

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

在C#中创建百分比类型

我的应用程序处理了很多百分比.这些通常以书面形式而不是十进制形式存储在数据库中(50%将存储为50而不是0.5).还要求在整个应用程序中一致地格式化百分比.

为此,我一直在考虑创建一个名为percentage的结构来封装这种行为.我想它的签名看起来像这样:

public struct Percentage
{
    public static Percentage FromWrittenValue();
    public static Percentage FromDecimalValue();

    public decimal WrittenValue { get; set; }
    public decimal DecimalValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是合理的事吗?它会认真地封装一些重复多次的逻辑,但这是人们可能理解的简单逻辑.我想我需要尽可能地使这种类型的行为像正常数字一样,但是我担心如果这会使人们进一步混淆,就会创建一个来自小数的隐式转换.

有关如何实现此类的任何建议?或令人信服的理由不这样做.

c#

8
推荐指数
2
解决办法
7654
查看次数

查找一组数字中的连续范围

我在数据库表中有一组相当大的电话号码(大约200万).这些数字已插入块中,因此有许多连续的数字范围,范围内从10到10万.其中一些号码正在使用中,因此标记为不可用,其余的可用.给定一个特定的数字,我需要一种方法来找到连续的数字范围,包括这个数字的上方和下方.范围应该继续,直到找到不可用的数字,或遇到两个范围的边界.

例如,给出以下集合:

1000
1001
1002
1010
1011
1012
1013
1020
1021
1022
Run Code Online (Sandbox Code Playgroud)

使用1012作为参数进行搜索应该返回1010,1011,1012,1013.

形成查询以查找这些范围的好方法是什么?我们在SQL服务器上使用NHibernate,使用其中任何一个的解决方案都很好.

sql nhibernate set

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

使用ADO.NET读取内存中的Excel文件(字节数组)?

我想使用ADO.net从Excel文件中提取一些数据.这个过程在互联网上有很好的记录.我的问题是我的文件已被用户上传,因此仅作为内存中的字节数组存在.出于安全性和性能原因,我宁愿不将此文件写入磁盘.

有没有办法构建连接到字节数组的连接字符串?或者可能将该数组暴露为实际存储在内存中的文件(如我猜的RAM磁盘)?

c# excel ado.net connection-string

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

防止ASP.Net MVC中的Cookie重播攻击

在本文中,我承担了实施第4点的任务:http : //support.microsoft.com/kb/900111

这涉及使用成员资格提供程序在用户登录和注销时向用户服务器端记录添加评论,然后确认当使用cookie进行身份验证时,用户尚未注销。这对我来说很有意义。这种情况开始瓦解的是我们当前不使用成员资格提供程序,因此似乎我要重新实现所有身份验证代码以使用成员资格提供程序。当前,我们在控制器中检查身份验证,并在FormsAuthentication.SetAuthCookie()知道用户存在后进行调用。强迫成员资格提供者从事很多工作。

所有这些工作真的必要吗?我是否可以将自己的Cookie值的键值存储区滚动给登录的用户,并确保在用户单击注销按钮时清除此设置。如果这似乎不安全,是否有一种方法可以实现最小成员资格提供程序,以便在不将所有身份验证代码交给它的情况下进行这些检查?

我想这里的主要问题是,我们很久以前就决定成员资格提供者模型不适合用于锁定和解锁帐户的模型,因此选择不使用它。现在,我们发现MS建议特别提到了成员资格提供程序,并且由于这是安全性,因此我需要确保不按建议使用它不会造成麻烦。

asp.net security asp.net-mvc forms-authentication

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

IE浏览器中的Firefox样式onclick参数

在firefox中,当您向方法添加onclick事件处理程序时,事件对象会自动传递给该方法.除其他外,这允许检测单击哪个特定元素的能力.例如

document.body.onclick = handleClick;

function handleClick(e)
{
    // this works if FireFox
    alert(e.target.className);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在IE中近似这个?我需要能够检测从body元素上的事件处理程序中单击的元素.

javascript javascript-events

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

可以作为服务或控制台应用程序运行的应用程序的可接受模式是什么

我有一个项目作为Windows服务部署到生产.但是,对于本地开发目的,将其作为控制台应用程序运行会很有用.目前我有一个Called类ReportingHost提供我的核心功能,还有一个名为ReportingServiceHost的类,它继承ServiceBase并允许我将应用程序作为服务运行.还有一个程序类,其主要方法调用ServiceBase.Run我的ReportingServiceHost.

我想我需要编写一个ReportingConsoleHost允许我在控制台中运行该功能的类.然后我需要修改我Main对命令行开关做出反应并选择其中一个.这些是我遇到麻烦的两个部分.

我已经看过这个并尝试使用该代码,但我的应用程序立即退出,它没有显示控制台窗口,并且它不会在关闭前等待Enter.

问题的一部分是我对这些事情的运作方式没有深刻的理解.一个分裂我的功能的权威模式,我运行该功能的两种不同方式,以及一个基于命令行参数选择这些方法之一的主方法是我希望实现的.

c# wcf windows-services

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

C# - NetUseAdd来自Windows Server 2008和IIS7上的NetApi32.dll

我正在尝试使用NetUseAdd添加应用程序所需的共享.我的代码看起来像这样.

[DllImport("NetApi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern uint NetUseAdd(
     string UncServerName,
     uint Level,
     IntPtr Buf,
     out uint ParmError);
Run Code Online (Sandbox Code Playgroud)

...

USE_INFO_2 info = new USE_INFO_2();
info.ui2_local = null;
info.ui2_asg_type = 0xFFFFFFFF;
info.ui2_remote = remoteUNC;
info.ui2_username = username;
info.ui2_password = Marshal.StringToHGlobalAuto(password);
info.ui2_domainname = domainName;

IntPtr buf = Marshal.AllocHGlobal(Marshal.SizeOf(info));

try
{
    Marshal.StructureToPtr(info, buf, true);

    uint paramErrorIndex;
    uint returnCode = NetUseAdd(null, 2, buf, out paramErrorIndex);

    if (returnCode != 0)
    {
        throw new Win32Exception((int)returnCode);
    }
}
finally
{
    Marshal.FreeHGlobal(buf);
}
Run Code Online (Sandbox Code Playgroud)

这在我们的服务器2003盒子上工作正常.但是在尝试转移到Server …

c# winapi iis-7 interop

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

是否可以将泛型参数约束为当前对象的子类型?

这是我刚刚遇到的一个有趣的问题.可以使用扩展方法做我想做的事情,但似乎不可能对类本身的成员做.

使用扩展方法,可以编写一个具有如下签名的方法:

public static void DoStuff<T>(this T arg1, T arg2)
Run Code Online (Sandbox Code Playgroud)

这强制了两个参数都是你想要调用它的任何类型.与委托一起使用时,这会变得更有用.

public static void DoStuff<T>(this T arg1, Action<T> arg2)
Run Code Online (Sandbox Code Playgroud)

但是,我无法与成员合作.这没有这样的限制:

public void DoStuff<T>(T arg1) where T : typeof(this)
Run Code Online (Sandbox Code Playgroud)

如果这确实有效,那么你可以像这样在你的基类上定义一个方法(我使用了流,因为它们是.NET中内置的层次结构):

class Stream
{
    public void DoStuff<T>(T stream) where T : this
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在子类上,不可能像这样调用它:

ByteStream bs = new ByteStream()
bs.DoStuff(new Stream()) // Error! DoStuff() should be inferred as DoStuff<ByteStream>()
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?我相信自动从参数中推断出类型,扩展方法是语法糖.这可能就是它起作用的原因; 因为扩展方法被静态调用替换,然后允许推断类型.

我问,因为我试图将扩展方法移动到一个公共基类,并且无法在不添加类型信息的情况下进行编译.

澄清.这不是仅仅添加的情况,where T : MyType因为如果我创建一个名为MySubType从继承的类型,MyType我将能够调用DoStuff实例MySubType并传递a MyType作为参数.这也意味着在需要的情况下,Action<T>我将无法在 …

c# generics extension-methods

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

将Nhibernate.Search与Nhibernate 2集成

我花了一整天的时间试图让NHibernate.Search和NHibernate 2.0一起工作,很遗憾地说我还没有管理它.我遇到了这里发布的问题并下载了该帖子链接的dll,但是这个例子使用的是搜索拦截器而不是EventListeners,我相信这是更新的做事方式.似乎很少有可用的信息,我能找到的信息很难理解,并且与其他信息相矛盾.

在这一点上,我对整个事情感到非常沮丧,我正在认真考虑编写自己的Nhibernate和Lucene(或者可能是另一个索引库)的集成.目前似乎NHibernate.Search现在已经足够成熟,我可以考虑使用它,我会更舒服地维护我自己的更简化的库.

我想知道的是,是否有一种明确的方法可以将NHibernate.Search与NHibernate 2一起使用,以及在生产环境中使用它是否可行.

nhibernate nhibernate.search

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