所以我正在启动一个新的.Net 4.0项目,并将使用公共API进行一些工作.我打算使用Microsoft HttpClient类,所以我安装了最新的稳定版Microsoft.Net.Http NuGet包(版本2.2.13).我正在看一些同事放在一起的POC代码,也使用HttpClient的NuGet包,并注意到这样的代码:
HttpClient client = new HttpClient();
HttpResponseMessage response = client.GetAync("/uri").Result;
DomainType result = response.Content.ReadAsAsync<DomainType>().Result;
Run Code Online (Sandbox Code Playgroud)
在我的项目中,在添加对Microsoft.Net.Http包的引用之后,当我尝试编写类似的代码时,我注意到HttpResponseMessage没有ReadAsAsync<T>()方法.在对我的同事的POC解决方案进行一些挖掘后,看起来ReadAsAsync<T>()它实际上是System.Net.Http.Formatting装配中的扩展方法.在这个POC解决方案中,有一个对System.Net.Http.Formatting的引用,但它从路径中提取此文件C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.Formatting.dll.
我的问题是,是否有更好的解决方案来访问此扩展方法,而不是从我的本地ASP.Net安装引用此程序集?我担心这会导致我们的CI服务器出现问题,因为它不太可能安装ASP.Net.我想我可以将System.Net.Http.Formatting复制到我的解决方案中的Lib目录,但是我希望有一个更好的选择,比如我错过的另一个NuGet包会给我这个程序集.
谢谢!
我刚开始使用SignalR,并且能够毫无问题地向所有连接的客户端广播消息.我现在想让我的客户端(javascript)加入一个组,只接收该组的消息.在我的集线器中,我有以下方法添加到命名组的连接:
public Task JoinGroup(string groupName)
{
return this.Groups.Add(Context.ConnectionId, groupName);
}
Run Code Online (Sandbox Code Playgroud)
在客户端上,我有以下JS:
var latLonBounds = new google.maps.LatLngBounds();
var tripIdentifier = '@Model.TripIdentifier';
$(function () {
var hub = $.connection.locationHub;
hub.client.updateLocation = function (coordinates) {
// Implementation omitted
});
latLonBounds.extend(position);
map.fitBounds(latLonBounds);
};
$.connection.hub.logging = true;
$.connection.hub.start().done(function() {
hub.server.joinGroup(tripIdentifier);
});
});
Run Code Online (Sandbox Code Playgroud)
加载我的网页时,在Chrome中,我在控制台中看到以下网址的HTTP 500:
http://localhost:49914/signalr/send?transport=serverSentEvents&connectionToken=AQAAANCMnd8BFdERjHoAwE%2FCl%2BsBAAAA8OmZGDrRfEaOjaHahkkarwAAAAACAAAAAAAQZgAAAAEAACAAAADM78kCBInmZa7OROdPoXraiugBXLR5Xu3htxYC2JSnSAAAAAAOgAAAAAIAACAAAAAZwnPx6GMKOiw%2FivqQPlSfCb4WNP342YxvGyBpalmjSDAAAADljl1vg%2F7GYtD3R4AA2A9LXEnNZkyQVQjDUrW7ZVbvfPpWz1GCcOn6aw5yrkrWFrhAAAAAyX5otz0Xhx8tuIRgX2Pr1b9ZWFMvoairvqzns1%2FhjN%2BRhDIuAqAfonTbsZDjkdyDAZXzAKQqwTEKhpa5LYBhKg%3D%3D
Run Code Online (Sandbox Code Playgroud)
在Visual Studio中,我看到以下堆栈跟踪:
SignalR exception thrown by Task: System.AggregateException: One or more errors occurred. ---> System.MissingMethodException: No parameterless constructor defined for this object.
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& …Run Code Online (Sandbox Code Playgroud)