小编Ica*_*rus的帖子

在SignalR中向除self以外的所有客户端广播消息

我意识到这些问题是相似的:

SignalR - 向除Caller之外的所有客户端广播

向当前客户端以外的组中的所有客户端发送消息

然而,他们已经老了,目前的文件中没有任何内容给我任何关于我是否做正确的事情的线索.

这是问题/问题:

我需要能够从服务器端向所有连接的客户端广播消息,除了提交http请求的人 - 想象有人提交表单并让所有连接到同一表单的人被通知已提交的内容.

我现在这样做的方式是这样的:

var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
var connectionID = HttpContext.Request.Cookies["conn-id"].Value;
context.Clients.AllExcept(connectionID).addMessage(message);
Run Code Online (Sandbox Code Playgroud)

每次建立连接时,我都会在客户端的cookie中设置ConnectionID,如下所示:

$.connection.hub.start().done(function(){ 
      $.cookie("conn-id",$.connection.hub.id); 
});
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  1. 这是我在这种情况下可以采取的最佳/唯一方法吗?我可以从其他地方读取发起请求的客户端的连接ID,hub.Context.ConnectionID或类似于SessionID从HttpContext.Current.Session.SessionID 获取的方式吗?

  2. 例如,可以通过将客户端连接到SessionID来以编程方式设置连接ID吗?这可能由于某种原因导致问题吗?如果是这样,您能否解释一下如何以编程方式设置连接ID以及我需要连接到哪个事件才能执行此操作?

我注意到每次重新加载页面时,连接ID都会更改为不同的guid.如何仅将ConnectionId设置一次并至少在Session的生命周期内维护它?

c# asp.net-mvc-4 .net-4.5 signalr

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

使用表达式树为LINQ查询构建IQueryable.Any

我正在使用System.Linq.Expressions.Expression类动态构建SQL"WHERE"子句.它适用于简单的子句,例如添加"PhaseCode = X"子句,我执行以下操作:

var equalTarget = Expression.Constant(phaseCode, typeof(int?));
var phaseEquals = Expression.Equal(Expression.PropertyOrField(projParam, "PhaseCode"), equalTarget);
Run Code Online (Sandbox Code Playgroud)

但是,现在我正在尝试构建一个表达式,如果已将项目分配给特定组,则该表达式将返回记录.项目和集团有多对多的关系.如果没有表达式树,我会按如下方式执行:

db.Projects.Where(p => .... && p.GroupsAssigned.Any(g => g.ID == groupId))
Run Code Online (Sandbox Code Playgroud)

但是,我似乎找不到用Expression类表达的方法.实际上有两件事我想不通:

  • 如何遍历表之间的关系
  • 怎么办x.Any()

任何帮助是极大的赞赏.

c# expression-trees

9
推荐指数
1
解决办法
6586
查看次数

CS0102类型'A'已经包含'set_color'的定义

我在尝试编译通过svcutil生成的代理类时遇到了上述错误.这是问题的简短版本:

class A
{
    private string colorField;
    private string set_colorField; 

    public string color
    {
        get
        {
            return this.colorField;
        }
        set
        {
            this.colorField = value;
        }
    }

    public string set_color
    {
        get
        {
            return this.set_colorField;
        }
        set
        {
            this.set_colorField = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编译好:

public string Color
{
    get;set;
}

public string Set_Color
{
    get;set;
}
Run Code Online (Sandbox Code Playgroud)

但这会引发同样的错误:

public string color
{
    get;set;
}

public string set_color
{
    get;set;
}
Run Code Online (Sandbox Code Playgroud)

我不记得曾经读过这个限制.有人能指出我对C#编译规范的相关部分吗?

.net c#

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

[-1,1] [+ !! boolean_var]的含义

有人可以解释reverse下面代码中双重否定var 的目的吗?

return function (a,b) {
   var A = key(a), B = key(b);
   return ((A < B) ? -1 :
           (A > B) ? +1 : 0)) * [-1,1][+!!reverse];                  
}
Run Code Online (Sandbox Code Playgroud)

我理解它的方式,目的是从[-1,1]数组中选择适当的索引,然后在乘法中使用它,但在我看来,[-1,1][+!!reverse];可以安全地替换为[-1,1][+reverse];

我错了吗?reverse在那里双重否定你会得到什么或阻止什么?

我在这个答案上看到了上面的代码.

javascript

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

调用标量值函数时,ExecuteScalar始终返回null

为什么这会返回null?

//seedDate is set to DateTime.Now; con is initialized and open. Not a problem with that
using (SqlCommand command = new SqlCommand("fn_last_business_date", con))
{
       command.CommandType = CommandType.StoredProcedure;
       command.Parameters.AddWithValue("@seed_date", seedDate);//@seed_date is the param name
       object res = command.ExecuteScalar(); //res is always null 
}
Run Code Online (Sandbox Code Playgroud)

但是当我直接在DB中调用它时如下:

select dbo.fn_last_business_date('8/3/2011 3:01:21 PM') 
returns '2011-08-03 15:01:21.000' 
Run Code Online (Sandbox Code Playgroud)

当我从代码中调用它时,我希望看到的结果

为什么,为什么,为什么?

c# sql sql-server sql-function

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

获取错误:并非所有代码路径都返回值

我是mvc C#的新手,我被卡住了.请告知如何解决这个问题.我在Add上收到错误.当我将鼠标悬停在红色波浪线上时,它会显示"并非所有代码路径都返回值"

    public ActionResult Add(ShapeInputModel dto, FormCollection collection)
    {

        var model = new GeoRegions();

        if (TryUpdateModel(model))
        {


            var destinationFolder = Server.MapPath("/App_Data/KML");
            var postedFile = dto.Shape;

            if (postedFile != null)
            {
                var fileName = Path.GetFileName(postedFile.FileName);
                var path = Path.Combine(destinationFolder, fileName);
                postedFile.SaveAs(path);

                //Save to Database
                Db.AddGeoRegions(model);
                return RedirectToAction("Index");

            }

            return View();

        }
    }
Run Code Online (Sandbox Code Playgroud)

c#

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

文本文件中的数据顺序是否会影响其压缩率?

我有2个大文本文件(确切地说是csv).两者都具有完全相同的内容,除了一个文件中的行按一个顺序而另一个文件中的行具有不同的顺序.

当我压缩这两个文件(以编程方式,使用DotNetZip)时,我注意到其中一个文件总是相当大 - 例如,一个文件比另一个文件大~7 MB .-

我的问题是:

文本文件中的数据顺序如何影响压缩以及可以采取哪些措施来保证最佳压缩比? - 我假设将相似的行组合在一起(至少在ZIP文件的情况下,这是我正在使用的)将有助于压缩,但我不熟悉不同压缩算法的内部,我很欣赏快速解释关于这个问题.

哪种算法能更好地处理这种情况,无论数据的顺序如何,都能实现最佳的平均压缩?

compression algorithm zip

4
推荐指数
2
解决办法
1558
查看次数

最佳实践 - 从Web服务中抛出异常

我们有一个ASMX Web服务,我们使用ajax(jQuery)从我们的ASP.NET应用程序调用它.

我们的Web方法的典型示例如下:

[WebMethod]
public void DoSomething(BusinessObject myParameter)
{

    try
    {
       BL.DoSomethingWithParam(myParameter);
    }
    catch(Exception ex)
    { 
        //logic to log the actual exception goes here
        //and then we throw a more user-friendly error as so:
        throw new Exception("Unable to perform action such an such");
    }
}
Run Code Online (Sandbox Code Playgroud)

在客户端,我们会有这样的事情:

$.ajax({
   type: "POST",
   url: "WebService.asmx/DoSomething",
   data: "{}",
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function(result) {
      //do something with result.d
    },
   error: function(xhr, ajaxOptions, thrownError){ 
      alert($.parseJSON(xhr.Response.Text).Message);
   }
});
Run Code Online (Sandbox Code Playgroud)

上面的方法有几个问题,我想解决这个问题:

  1. 当我们在我们的盒子上本地测试我们的应用程序时,Internet Explorer会在我们的Web方法上显示我们抛出新的Exception行的实际错误消息(在提供的示例代码的情况下:"无法执行此类操作等")但是当我们部署到舞台环境并远程测试时; 它不再显示我们抛出的错误,而是显示:"There …

asp.net jquery json web-services asmx

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

正则表达式 - 这可能吗?

而不是描述我想要的东西(很难解释),让我提供一个示例,说明我需要使用正则表达式在C#中完成的任务:

"HelloWorld" should be transformed to "Hello World" 
"HelloWORld" should be transformed to "Hello WO Rld" //Two consecutive letters in capital should be treatead as one word
"helloworld" should be transformed to "helloworld"
Run Code Online (Sandbox Code Playgroud)

编辑:

"HellOWORLd" should be transformed to "Hell OW OR Ld"
Run Code Online (Sandbox Code Playgroud)

每两个连续的大写字母应被视为一个单词.

这可能吗?

.net c# regex

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

其他功能事件提供了委托

据我了解,事件是类允许客户将事件的发生时应调用的方法委托给类的一种方法。事件发生时,将调用由其客户赋予它的委托。

但是如上面的以下代码所示,也可以仅通过委托(即不使用委托)来实现所述功能。

class Program
{
    static void Main(string[] args)
    {
        ListWithChangedEvent lwce = new ListWithChangedEvent();
        lwce.delegateVariable = DelegateTestMethod;
        lwce.Add("test");

        Console.ReadLine();
    }

    public static void DelegateTestMethod(object sender, object e)
    {

    }
}

public delegate void ChangedEventHandler(object sender, object e);

public class ListWithChangedEvent : System.Collections.ArrayList
{
    public override int Add(object value)
    {
        int result = base.Add(value);
        if (delegateVariable != null)
            delegateVariable(this, "");
        return result;
    }

    public ChangedEventHandler delegateVariable;

}
Run Code Online (Sandbox Code Playgroud)

因此,我想知道事件提供什么附加功能?

c# events

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

SQL查询从同一列但多个值中进行选择

这是我的桌子.

id  customer        product 
1   Tizag           Pen 
4   Gerald Garner   19" LCD Screen  
5   Tizag           19" LCD Screen  
Run Code Online (Sandbox Code Playgroud)

我想选择同时拥有"Pen"和"19"LCD Screen的客户.因此,结果是客户'Tizag'.

我怎样才能做到这一点.

谢谢和问候,Rupak Banerjee.

mysql sql

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