小编Hyd*_*per的帖子

使用PowerShell计算文件夹中的项目

我正在尝试编写一个非常简单的PowerShell脚本来为我提供给定文件夹(c:\MyFolder)中项目(文件和文件夹)的总数.这就是我所做的:

Write-Host ( Get-ChildItem c:\MyFolder ).Count;
Run Code Online (Sandbox Code Playgroud)

问题是,如果我有1或0项,命令不起作用 - 它什么都不返回.

有任何想法吗?

powershell-2.0

77
推荐指数
5
解决办法
16万
查看次数

实体框架5 - DbContext有变化吗?

我正在尝试找到一种方法来确定对数据库上下文(DbContext)所做的任何更改.注意:我在Windows 7,64位框中使用Visual Studio 2012和Entity Framework 5.

当我以前使用ObjectContext而不是DbContext时,我可以做类似的事情:

public partial class MyObjectContext
{
    public Boolean HasUnsavedChanges()
    {
        return (this.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted).Any());
    }
}
Run Code Online (Sandbox Code Playgroud)

既然我正在使用DbContext,我试着这样做:

public partial class MyDbContext
{
    public ObjectContext ObjectContext()
    {
        return (this as IObjectContextAdapter).ObjectContext;
    }

    public Boolean HasUnsavedChanges()
    {
        return (this.ObjectContext().ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted).Any());
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是方法"HasUnsavedChanges()"总是返回"false",即使我知道上下文已被更改的事实.有没有人对我做错了什么有任何想法?

entity-framework entity-framework-4.1

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

IIS7访问网络共享

我使用PHP 5.4在Windows Server 2008 R2上运行IIS 7.我的一个PHP脚本尝试使用UNC路径访问受保护网络共享上的文件.如何将IIS服务帐户更改为有权访问共享的帐户?这在Apache HTTP服务器上很容易做到(你只需更改它),但目前还不清楚如何处理IIS.我能做什么?

更新:

我能够使用我网站"基本设置"中的"连接为"选项让工作正常,然后指定一个可以访问网络共享的帐户.这似乎是我的问题是与此相关的问题:

https://serverfault.com/questions/366234/iis-identities-application-pool-vs-connect-as-in-basic-settings

iis-7 windows-server-2008-r2

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

如何使用C#并行执行多个"Ping"

我试图计算一组服务器的平均往返时间.为了加快速度,我想并行执行ping操作.我已经写了一个函数调用AverageRoundtripTime()它似乎工作,但是,因为我不太了解多线程,我想知道我做了什么是好的.请查看我的代码并让我知道它是否正常或是否有更好的方法来实现我想要的:

public void Main()
{
    // Collection of hosts.
    List<String> hosts = new List<String>();

    // Add 100 hosts to the collection.
    for (Int32 i = 0; i < 100; ++i) hosts.Add("www.google.com");

    // Display the average round-trip time for 100 hosts.
    Console.WriteLine(AverageRoundtripTime(hosts));

}

public Double AverageRoundtripTime(IEnumerable<String> hosts)
{
    // Collection of threads.
    List<Thread> threads = new List<Thread>();

    // Collection of ping replies.
    List<PingReply> pingReplies = new List<PingReply>();

    // Loop through all host names.
    foreach (var host in hosts)
    { …
Run Code Online (Sandbox Code Playgroud)

c# multithreading ping

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

实体框架5 - 实现SQL Server"以用户身份执行"

我正在使用带有Entity Framework 5和SQL Server 2008的Visual Studio 2012编写数据库应用程序.我希望Entity Framework能够模拟SQL Server用户(即没有登录的用户).我为DB上下文创建了一个新的构造函数,MyDatabaseEntities其中包含一个用于模拟的用户名的参数.这是我写的代码:

public partial class MyDatabaseEntities
{
    private String _impersonateUser = null;

    public MyDatabaseEntities(String impersonateUser)
        : base("MyConnectionString")
    {
        _impersonateUser = impersonateUser;

        this.Database.Connection.StateChange += Connection_StateChange;

    }

    void Connection_StateChange(object sender, StateChangeEventArgs e)
    {
        if (e.CurrentState == ConnectionState.Open && e.OriginalState != ConnectionState.Open)
        {
            using (var cmd = this.Database.Connection.CreateCommand())
            {
                cmd.CommandType = CommandType.Text;

                cmd.Parameters.Add(new SqlParameter("user", _impersonateUser));

                cmd.CommandText = "EXECUTE AS USER = @user";

                cmd.ExecuteNonQuery();

            }

        }

    }
Run Code Online (Sandbox Code Playgroud)

我不得不加上支票......

if (e.CurrentState == ConnectionState.Open && e.OriginalState != …
Run Code Online (Sandbox Code Playgroud)

impersonation sql-server-2008-r2 entity-framework-5 visual-studio-2012

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

Windows窗体应用程序中的任务并行库代码冻结 - 作为Windows控制台应用程序正常工作

这个问题是我曾问过的上一个问题的后续问题:

如何使用C#并行执行多个"Ping"

我能够获得接受的答案(Windows控制台应用程序),但是当我尝试在Windows窗体应用程序中运行代码时,以下代码将冻结在包含的行上Task.WaitAll(pingTasks.ToArray()).这是我试图运行的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.NetworkInformation;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            List<String> addresses = new List<string>();

            for (Int32 i = 0; i < 10; ++i) addresses.Add("microsoft.com");

            List<Task<PingReply>> pingTasks = new List<Task<PingReply>>();
            foreach (var address in addresses)
            {
                pingTasks.Add(PingAsync(address));
            }

            //Wait for all the tasks …
Run Code Online (Sandbox Code Playgroud)

c# ping winforms task-parallel-library .net-4.5

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

Apache HTTP Server 2.4 LDAP(活动目录)身份验证

我已经在 Windows 2008 服务器上安装了带有 PHP 5.4 的 Apache 2.4。我正在尝试针对 Active Directory 服务器进行身份验证。我在 httpd.conf 中取消了以下注释

LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule ldap_module modules/mod_ldap.so
Run Code Online (Sandbox Code Playgroud)

我创建了以下别名

Alias /Website "C:/Web/Aliases/Website"
<Location /Website>

# Using this to bind
AuthLDAPBindDN "CN=John Doe,OU=Accounts,OU=CA,OU=Country,OU=Company Name,DC=com"
AuthLDAPBindPassword "mypassword"
# search user
AuthLDAPURL "ldap://myserver/OU=Country,OU=Company,DC=com?poibri02?sub?(objectClass=*)"

AuthType Basic
AuthName "USE YOUR WINDOWS ACCOUNT"
AuthBasicProvider ldap
require valid-user

</Location>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试访问该网站时,我得到了一个500 Internal Server Error并且 error.log 给出了以下内容

[Wed Jan 09 12:05:28.614839 2013] [ldap:error] [pid 3904:tid 1064] (70023)This function has not been implemented on this platform: …
Run Code Online (Sandbox Code Playgroud)

apache2 active-directory

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

在事务内部或外部打开和关闭游标,以及在事务失败时如何关闭游标

我正在SQL Server 2012中编写一个存储过程,该过程使用游标读取并在TRY CATCH块内进行事务。基本上,我的问题如下:

  1. 我应该在TRY CATCH块内声明光标吗?如果是,我应该在声明之前还是之后声明游标BEGIN TRANSACTION
  2. 我应该在BEGIN TRANSACTION语句之前还是之后打开游标?
  3. 我应该在COMMIT TRANSACTION语句之前还是之后关闭并释放游标吗?
  4. 如果出现ROLLBACK TRANSACTION故障,我应该在语句之前或之后关闭并释放游标吗?

示例T-SQL代码:

DECLARE @ColumnID AS INT;
DECLARE @ColumnName AS VARCHAR(20);
DECLARE @ColumnValue AS FLOAT;

-- Should I declare my cursor inside the TRY CATCH block?
-- If yes, should I declare the cursor before or after the BEGIN TRANSACTION statement?

DECLARE myCursor CURSOR LOCAL FAST_FORWARD FOR
    SELECT
        a.ColumnID,
        a.ColumnName,
        a.ColumnValue

    FROM
        MyTable a;

BEGIN TRY

    -- …
Run Code Online (Sandbox Code Playgroud)

sql transactions cursor sql-server-2012

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

LINQ to DataGridViewRowCollection

关于DataGridViewRowCollection上的LINQ查询,我有点神秘.这是我的查询(其中"grid"是DataGridView对象):

var rows = from DataGridViewRow row in grid.Rows
           where row.Selected
           select row;
Run Code Online (Sandbox Code Playgroud)

我有一个包含此查询的项目,它完美地执行.问题是在另一个项目中,当我尝试构建解决方案时,我收到以下错误:

error CS1936: Could not find an implementation of the query pattern for source type 'System.Windows.Forms.DataGridViewRow'.  'Where' not found.
Run Code Online (Sandbox Code Playgroud)

起初我认为这是一个参考问题,但我在两个项目中使用相同的引用:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Data;
using System.Data.EntityModel;
using System.Drawing;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Diagnostics;
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么我的LINQ查询可以在一个项目中工作而不能在另一个项目中工作?

编辑1:

为了记录在案,这里是查询的确切范围内工作:

public List<Int64> ComponentIDs
{
    get
    {
        return
            (
                from DataGridViewRow …
Run Code Online (Sandbox Code Playgroud)

c# linq datagridview

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

SQL Server 2008 FILESTREAM进度指示器

我有一个SQL Server 2008数据库,其中包含一个包含FILESTREAM varbinary(max)列的表.我已经设置了数据库服务器以使用文件流,一切运行良好.我还使用C#+ Entity Framework 4.1(Visual Studio 2010)创建了一个客户端应用程序 - 这也很好用,我可以毫无困难地读取和写入varbinary(max)列.我的问题是这样的:对于非常大的文件,从数据库上传/下载文件数据可能需要一段时间.有没有办法可以确定已取得多少进展并通知用户?

谢谢!

ado.net entity-framework filestream sql-server-2008 entity-framework-4.1

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

使用存储过程"执行用户"并应用于调用上下文(会话)

我在Windows 7机器上使用SQL Server 2008 R2.我创建了一个存储过程来运行SQL命令EXECUTE AS USER:

CREATE PROCEDURE dbo.ImpersonateUser
AS
BEGIN
EXECUTE AS USER = 'UserName';
END
Run Code Online (Sandbox Code Playgroud)

然后,我试图看看我是否冒充了用户......

PRINT CURRENT_USER;

EXEC ImpersonateUser;

PRINT CURRENT_USER
Run Code Online (Sandbox Code Playgroud)

......结果是......

dbo
dbo
Run Code Online (Sandbox Code Playgroud)

......当我希望它......

dbo
UserName
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用,因为该EXECUTE AS USER语句仅在存储过程中有效ImpersonateUser. 我的问题是:存储过程是否可能ImpersonateUser影响调用上下文(会话)?我想在存储过程中封装(和隐藏)其他逻辑.

impersonation sql-server-2008-r2

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