小编Nul*_*nce的帖子

尝试浏览信号器/集线器时,HTTP 503服务不可用

我在VS2012中创建了一个Windows托管的SignalR集线器:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR();
    }
}

public static class SignalR
{
    public static void Start()
    {
        const string url = "http://*:8080";
        WebApp.Start<Startup>(url);
    }
}

 public class Broadcaster : Hub
    {

        public void SendDownloadResult(bool result, string device, string description, string connectionId, string task)
        {
            var context = GlobalHost.ConnectionManager.GetHubContext<Broadcaster>();
            context.Clients.Client(connectionId).sendDownloadResult(result, device, description, task);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我已经在3台不同的PC上部署了这个Windows服务,它可以在两台PC上正常工作,但另一方面,当我尝试浏览时,我得到HTTP 503服务不可用 http://localhost:8080/signalr/hubs

在所有3台PC上执行代码时不会抛出异常.

我已经在添加/删除Windows功能中检查了IIS的功能,它们都是一样的.

我错过了什么?

.net c# windows-services signalr

17
推荐指数
2
解决办法
8684
查看次数

升级到WebAPI 2.1时出错XmlDocumentationProvider未实现接口成员GetDocumentation

我在这里按照教程:

http://www.asp.net/web-api/overview/releases/whats-new-in-aspnet-web-api-21#download

我在Visual Studio 2012(.NET Framework 4.5)中创建了一个MVC Web Api项目,并在我的NuGet包管理器控制台安装包中运行此命令Microsoft.AspNet.WebApi

当我尝试构建我的项目时,我收到此错误:

'CommonServices.Areas.HelpPage.XmlDocumentationProvider' does not implement interface member 
    'System.Web.Http.Description.IDocumentationProvider.GetDocumentation(System.Web.Http.Controllers.HttpControllerDescriptor)' c:\users\administrator\documents\visual studio 2012\Projects\CommonServices\CommonServices\Areas\HelpPage\XmlDocumentationProvider.cs

'CommonServices.Areas.HelpPage.XmlDocumentationProvider' does not implement interface member 
    'System.Web.Http.Description.IDocumentationProvider.GetResponseDocumentation(System.Web.Http.Controllers.HttpActionDescriptor)' c:\users\administrator\documents\visual studio 2012\Projects\CommonServices\CommonServices\Areas\HelpPage\XmlDocumentationProvider.cs
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

.net asp.net asp.net-web-api visual-studio-2012

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

Bootstrap:选择/选项列表在以编程方式添加项目后不会刷新

我有以下选择/选项

<select class="bs-select form-control">
    <option value="AL">Alabama</option>
    <option value="WY">Wyoming</option>
</select>
Run Code Online (Sandbox Code Playgroud)

在我的脚本部分,我有这个,它工作正常.风格正在应用

$(document).ready(function () {
    $('.bs-select').selectpicker();
});
Run Code Online (Sandbox Code Playgroud)

我有一个按钮来执行此操作:

$('.bs-select').append($('<option>', {
                        value: 0,
                        text: "test"
                    }));
Run Code Online (Sandbox Code Playgroud)

但是我的选择列表没有刷新.

我尝试添加

$('.bs-select').selectpicker();
Run Code Online (Sandbox Code Playgroud)

追加后但它仍然无法正常工作.

如果我删除了$('.bs-select').selectpicker()in,我的选择列表会刷新$(document).ready

如何在添加项目后让我的列表刷新?

html javascript jquery twitter-bootstrap

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

从.NET 2.0客户端调用Web Api服务

是否可以从.NET 2.0客户端调用Web Api方法?

请参考此处的指南:http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client

其中一些客户端的dll似乎与.NET 2.0不兼容

有没有办法从.NET 2.0客户端调用Web Api方法而不添加任何dll?

.net c# web-services .net-2.0 asp.net-web-api

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

如何正常重新连接到套接字

我有一个以下方法连接到程序启动时的终点

ChannelSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
var remoteIpAddress = IPAddress.Parse(ChannelIp);
ChannelEndPoint = new IPEndPoint(remoteIpAddress, ChannelPort);
ChannelSocket.Connect(ChannelEndPoint);
Run Code Online (Sandbox Code Playgroud)

我还有一个定时器,设置为每60秒触发一次CheckConnectivity,它会尝试将任意字节数组发送到终点,以确保连接仍然存在,如果发送失败,它将尝试重新连接.

public bool CheckConnectivity(bool isReconnect)
{
    if (ChannelSocket != null)
    {
        var blockingState = ChannelSocket.Blocking;
        try
        {
            var tmp = new byte[] { 0 };
            ChannelSocket.Blocking = false;
            ChannelSocket.Send(tmp);
        }
        catch (SocketException e)
        {
            try
            {
                ReconnectChannel();
            }
            catch (Exception ex)
            {
                return false;
            }
        }
    }
    else
    {
        ConnectivityLog.Warn(string.Format("{0}:{1} is null!", ChannelIp, ChannelPort));
        return false;
    }

    return true;
} 

private …
Run Code Online (Sandbox Code Playgroud)

.net c# sockets robustness tcp-ip

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

entityframework已经有一个与此命令关联的开放DataReader,必须先关闭它

我有以下代码从客户表中检索数据

var customers= context.CustomerEntities.Include("Addresses").Select(Mapper.Map).ToList();
Run Code Online (Sandbox Code Playgroud)

映射器函数将实体对象映射到业务对象,它看起来像这样

    internal static Customer Map(CustomerEntity entity)
    {
        if (entity == null)
            return null;

        return new Customer
        {
            Id = entity.Id,
            Name = entity.Name,
            Addresses = Map(entity.Addresses)

        };
    }
Run Code Online (Sandbox Code Playgroud)

现在,上面的代码运行良好.

但是,当我尝试这样做时:

var customers= context.CustomerEntities.Select(Mapper.Map).ToList();
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:There is already an open DataReader associated with this Command which must be closed first执行Mapper函数时.

现在我知道要解决这个问题,我必须multipleactiveresultsets=True在我的连接字符串中设置.我试过了,它确实解决了我的问题.

但是,当我运行SQL事件探查器时,从实体框架查询所有客户也会自动检索所有地址,即使我不需要它们.

除了必须设置之外还有解决方法multipleactiveresultsets=True吗?我不希望地址一直延迟加载.

.net c# entity-framework linq-to-sql

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

SignalR 2.0 .NET控制台客户端

我有我的服务器控制台应用:

    static void Main(string[] args)
    {
        string url = "http://localhost:8080";
        using (WebApp.Start(url))
        {
            MyHub hub = new MyHub();
            Console.WriteLine("Server running on {0}", url);
            var key = Console.ReadLine();
            while (key != "quit")
            {
                hub.Send("Server", key);
            }
        }
    }

public class MyHub : Hub
{
    public void Send(string name, string message)
    {
        var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
        context.Clients.All.addMessage(name, message);
    }
}
public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的.NET客户端应用程序

    static void Main(string[] args)
    {

        MainAsync().Wait();
        Console.ReadLine();
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net signalr signalr.client

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

以编程方式更改复选框不会触发更改事件

我在这里有以下代码:

$('input[type="checkbox"][id="gridlines"]').change(function () {
    alert('hello world');
});

$('#gridlines').prop('checked', true);
Run Code Online (Sandbox Code Playgroud)

当我加载页面时,选中复选框,但不会提示"hello world"

但是,当我手动单击复选框时,会出现"hello world"

是什么赋予了?

javascript jquery javascript-events

11
推荐指数
2
解决办法
2723
查看次数

实体框架将记录添加到多对多的映射表中

我有3张桌子,

1)客户(Id,Name,bla bla)

2)CustomerGroups(GroupId,GroupName)

3)CustomerInGroups(CustomerId,GroupId)

using (var context = DataObjectFactory.CreateContext())
{                
    context.Customers.Add(entity);
    context.SaveChanges();
    return entity.Id;
}
Run Code Online (Sandbox Code Playgroud)

如何在CustomerInGroups中添加记录?EntityFramework不会为这样的多对多映射表生成实体

编辑:

Customer和CustomerGroups中的Id列都设置为自动增量.

所以在我的CustomersGroup表中,我有

Id          Name
----------------------------
1           Normal
2           VIP
Run Code Online (Sandbox Code Playgroud)

我尝试这样做,因为其中一张海报建议:

entity.CustomerGroups = new List<CustomerGroup>
{
    new CustomerGroup {Id = 2 }
};
context.Customers.Add(entity);
context.SaveChanges();
return entity.Id;
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,而不是像这样在映射表中创建一条记录:

CustomerId          GroupId
----------------------------
1                   2
Run Code Online (Sandbox Code Playgroud)

我得到的是

CustomerInGroups
    CustomerId          GroupId
    ----------------------------
    1                   3

CustomerGroups
    Id          Name
    ----------------------------
    1           Normal
    2           VIP
    3           NULL
Run Code Online (Sandbox Code Playgroud)

它实际上在我的CustomerGroups表中创建了另一个条目,这不是我想要的

.net c# many-to-many entity-framework

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

什么是C#在javascript/jquery等待?

我正在使用一个名为的jQuery库 bootbox

bootbox.dialog({
    title: "Group",
    buttons: {
        success: {
            label: "OK",
            className: "btn-success",
            callback: function () {
                postForm();
            }
        }
    }
});

function postForm() {        
    $.ajax({
        type: "POST",
        url: $("#add-group").val(),
        data: $("#form").serialize(),
        success: function (data) {
            return true;
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            return false;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

当我点击"确定"按钮时,除非我返回如下的假值:

callback: function () {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

对话框将关闭.

在回调函数中,我正在调用postForm哪个函数对我的服务器端进行AJAX调用以执行某些操作.根据该操作的结果,我想保持对话框仍然打开.

但是因为它是一个AJAX调用,并且结果需要一段时间才能返回,所以postForm()无论我的结果如何,对话框都会立即关闭.

如何告诉javascript等待ajax调用的结果?

如果我能做到这样的话会很棒:

callback: function () {
    var result = await postForm();
    return result;
}
Run Code Online (Sandbox Code Playgroud)

javascript async-await bootbox

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