我已经看到了用于asp.net MVC聊天应用程序的signalR vs html5 websockets,但它没有100%回答我的问题,因为它基于HTML5 WebSockets,微软可能已经在.NET 4.5中使用他们的WebSocket对象进行了扩展.
我想知道WebSocket功能是否确实与SignalR相同,并且在WebSockets不可用时又回退到长轮询?当然,微软在采用这种技术的方法中会采用与SignalR相同的技术吗?
编辑:
对于其他任何想知道这个的人,我发现这个评论最有助于理解这个场景以及为什么我会使用SignalR:
嗯,他们不是真的.到目前为止,IIS和ASP.NET没有内置任何受支持的WebSockets,因此SignalR项目必须自己构建它.现在微软正在提供管道,SignalR可以轻松切换到使用微软的实现,无论是自己的还是替代.SignalR是一个实现细节的抽象,WebScockets类是实现细节
目前的情况:
function Employee(data) {
var self = this;
// variables
this.Forename = ko.observable(data.Forename);
this.Surname = ko.observable(data.Surname);
this.Save = function () {
var obj = JSON.stringify(self); // Without ko.observables, this works fine. self() doesn't work obviously.
console.log(obj);
};
}
Run Code Online (Sandbox Code Playgroud)
我认为我要做的是非常简单,获取所有可观察的值而不经过它们中的每一个,并使用stringify函数创建一个JSON字符串.没有可观察量这很容易做到,有没有一种简单的方法可以用它们做到?
经过与WCF安全的残酷斗争后,我想我现在处于最后阶段,可以看到光明.
我已经在我的服务器上安装了客户端证书,现在,按照建议,它现在位于证书库的"受信任的人"文件夹中.
但是,当我尝试阅读证书申请 - >服务时,我收到此错误:
使用以下搜索条件找不到X.509证书:StoreName'My',StoreLocation'CurrentUser',FindType'FindBySubjectName',FindValue'Forename Surname'.
使用"Forename姓氏"作为我的证书的"已发布"部分.在我看过的所有教程中,这只是一个字; 这是问题吗?我从我的CA收到了我的证书,上面写着这两个字,带有空格.
任何人都遇到过这种情况,有什么我公然做错了吗?
更新,证书可以在这里看到:
更新:
它变得更加奇怪:
我在我的Web服务器上安装了Visual Studio,并使用以下代码通过Thumbprint获取证书:
var store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates.Find(X509FindType.FindByThumbprint, "71995159BFF803D25BFB691DEF7AF625D4EE6DFB", false);
Run Code Online (Sandbox Code Playgroud)
这实际上是RETURNS一个有效的结果.当我将此信息放入我的服务/客户端的web.config时,我仍然得到错误.
我确定我在某个阶段之前已经完成了这个,但我现在还不清楚怎么做!我的情景:
// This is generated from EDMX
public partial class HOLDbEntities : DbContext
{
public HOLDbEntities()
: base("name=HOLDbEntities")
{
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望这个连接字符串很容易更改(我想从HOLDbEntities实现),所以我需要覆盖这个构造函数.
我试过了:
public partial class HOLDbEntities
{
private const string _contextName = "HOLDbEntities";
public static string ContextName { get { return _contextName; } }
public HOLDbEntities()
: base(ContextName)
{
}
}
Run Code Online (Sandbox Code Playgroud)
但这会引发一个错误:
HOLDbEntities已经定义了一个名为"HOLDbEntities"的成员,它具有相同的参数类型.
我可以理解为什么会出现这种错误,但是为了做我想要实现的目标,我将如何阻止构造函数首先自动生成?
我想要做的只是在.NET MVC 6/vNext注册过程中允许使用字母数字字符,以及我见过的每个教程(即配置Microsoft.AspNet.Identity以允许电子邮件地址作为用户名)引用UserManager.UserValidator
,其中现在是在当前框架中不可用.
我已经看到了这一点:Microsoft.AspNet.Identity vnext中的UserValidator看起来与我的问题相同,但是他们UserNameValidationRegex
从那时起就将该属性从框架中删除了.辉煌.
services.AddIdentity<ApplicationUser, IdentityRole>(
o => {
o.Password.RequireDigit = false;
o.Password.RequireLowercase = false;
o.Password.RequireUppercase = false;
o.Password.RequireNonLetterOrDigit = false;
o.Password.RequiredLength = 2;
//o.User.AllowedUserNameCharacters here seems to be the only logical thing I can access
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)
我发现了o.User.AllowedUserNameCharacters
,但是由于没有我在此发现的文档,我不知道我必须设置哪种格式?在那里的任何人都在同一条船上工作了吗?
提前致谢.
这是关于我的JavaScript代码结构的一般性问题,如果我朝着结构良好的代码方向前进的话.
我目前的代码:
(function (myNamespace, $, undefined) {
myNamespace.className = {
init:function { } // do stuff
}
} (window.myNamespace= window.myNamespace|| {}, jQuery)));
(function (myNamespace, $, undefined) {
myNamespace.className2 = {
init:function { } // do stuff
}
} (window.myNamespace= window.myNamespace|| {}, jQuery)));
Run Code Online (Sandbox Code Playgroud)
显然,使用上面的代码,我可以使用相同的命名空间(按页/站点部分)并通过myNamespace.className.init()
等方式调用它们.如果我愿意,我也可以将它们组合在一起,但是我为了可读性而封装了类.
现在,我一直在阅读关于调解员概念的http://addyosmani.com/largescalejavascript/.我的第二个问题是何时(以及如果)我应该使用这些?从className2显然我可以这样做:
myNamespace.className2 = {
init:function { myNamespace.className.init() } // do stuff
}
Run Code Online (Sandbox Code Playgroud)
那么为什么会这样订阅className mediator.subscribe("classNameInit")
并在className中发布该事件呢?
我非常乐意接受有关代码结构的建议,因为在我改变编写JavaScript的方式时,这是我需要做的事情.
我目前正在尝试在我的应用程序中使用相同的DbContext(我有两个相同结构的数据库).我不太确定我做错了什么,但这是我现在的代码 - 希望我应该很清楚我要做的事情.我正在使用EF Database First(底部的错误似乎没有提示).
我的上下文工厂代码:
public class HOLContextFactory
{
public static HOLDbEntities Create()
{
return new HOLDbEntities(); // Works
}
public static HOLDbQuoteEntities CreateQuote()
{
return new HOLDbQuoteEntities(); // Gives error
}
}
public partial class HOLDbQuoteEntities : HOLDbEntities
{
public HOLDbQuoteEntities()
: base("HOLDbQuoteEntities") // This should send "HOLDbQuoteEntities" as the base connection string?!
// Also tried "name=HOLDbQuoteEntities"
{
}
}
Run Code Online (Sandbox Code Playgroud)
Web.config连接字符串:
<add name="HOLDbEntities" connectionString="metadata=res://*/HOLDbContext.csdl|res://*/HOLDbContext.ssdl|res://*/HOLDbContext.msl;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" />
<add name="HOLDbQuoteEntities" connectionString="metadata=res://*/HOLDbContext.csdl|res://*/HOLDbContext.ssdl|res://*/HOLDbContext.msl;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> // using diff …
Run Code Online (Sandbox Code Playgroud) 我最近试图进入Google AnalyticsAPI的精彩世界,并且在我的生活中,无法在相对于我的解决方案文件的某个位置获取P12密钥路径,因此(这就是我到目前为止):
var certificate = new X509Certificate2("C:\\mykey.p12", "notasecret", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
Run Code Online (Sandbox Code Playgroud)
这样工作正常,没问题!但是,我会把它推到Azure,所以C:\根本不起作用.
我试过了:
var certificate = new X509Certificate2("mykey.p12", "notasecret", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
Run Code Online (Sandbox Code Playgroud)
使用我的解决方案的根路径中的密钥,nada,这根本不起作用.我一直在那里搜索教程,人们说这是可能的,但没有提供关于如何在解决方案本地引用密钥的任何内容,因此它可以在Azure上工作(使用MachineKeySet).
提前致谢.
这应该是一个简单的,但通过我在网上完成的所有研究,我似乎无法找到解决方案!
我目前有一个使用.sortable的可排序列表,然后双击一个.bind事件,绑定事件如下:
$("#controlContainer").sortable({
blah blah
})
.bind('dblclick', function(event) {
alert($(event.eventData).attr('id'));
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,上面的内容不起作用,我需要获取双击任何元素的ID,但无法找到访问它的方法.
任何有解决方案的人?非常感谢.
我现在已经接近解决这个问题并认为它很简单,但是,必须有一些我想念的东西......
我在ko.observableArray中有一个多维数组,其中是:
网站 - >公司 - >工作
对于我的数据绑定,data-bind="text: Site().Name"
很好,正如您所期望的那样.但是,我无法通过data-bind="text: Site().Company().Name"
或访问子数组data-bind="text: Site().Company.Name"
.
有没有其他人有同样的问题,或者有什么我做错了什么?这些对象100%正确加载到数组中,因为我可以在控制台中看到它们.
c# ×4
.net ×3
asp.net ×3
javascript ×3
jquery ×3
asp.net-mvc ×2
knockout.js ×2
asp.net-core ×1
azure ×1
certificate ×1
json ×1
mediator ×1
mvvm ×1
signalr ×1
ssl ×1
wcf ×1
wcf-security ×1
websocket ×1