我已经和它搏斗了一段时间,并且无法弄清楚发生了什么.我有一个卡片实体,其中包含Sides(通常为2个) - 卡片和侧面都有一个舞台.我正在使用EF Codefirst迁移,并且迁移失败并出现此错误:
在表'Sides'上引入FOREIGN KEY约束'FK_dbo.Sides_dbo.Cards_CardId'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.
这是我的卡片实体:
public class Card
{
public Card()
{
Sides = new Collection<Side>();
Stage = Stage.ONE;
}
[Key]
[Required]
public virtual int CardId { get; set; }
[Required]
public virtual Stage Stage { get; set; }
[Required]
[ForeignKey("CardId")]
public virtual ICollection<Side> Sides { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的Side实体:
public class Side
{
public Side()
{
Stage = Stage.ONE;
}
[Key]
[Required]
public virtual int …
Run Code Online (Sandbox Code Playgroud) 我一直在玩toastr并且已经成功地将超时设置为0,因此吐司仍然是粘性的,但是当我将鼠标移出吐司时吐司消失了.我想要覆盖它,所以如果用户点击它,烤面包就会消失 - 非常适合有大量文字的祝酒词.如何才能做到这一点?
说我有两个场景:
1)WebApi控制器
[System.Web.Http.HttpPost]
[System.Web.Http.AllowAnonymous]
[Route("api/registerMobile")]
public async Task<HttpResponseMessage> RegisterMobile(RegisterModel model)
{
var registerResponse = await AuthUtilities.RegisterUserAsync(model, _userService, User);
if (registerResponse.Success) {
var response = await _userService.GetAuthViewModelAsync(model.Username, User);
return Request.CreateResponse(HttpStatusCode.OK, new ApiResponseDto() { Success = true, Data = response });
}
else {
return Request.CreateResponse(HttpStatusCode.OK, registerResponse);
}
}
Run Code Online (Sandbox Code Playgroud)
2)MVC控制器
[Route("public")]
public async Task<ActionResult> Public()
{
if (User.Identity.IsAuthenticated)
{
var model = await _userService.GetAuthViewModelAsync(User.Identity.Name);
return View("~/Views/Home/Index.cshtml", model);
}
else
{
var model = await _userService.GetAuthViewModelAsync(null);
return View("~/Views/Home/Index.cshtml", model);
}
}
Run Code Online (Sandbox Code Playgroud)
我一直在阅读我应该使用的时间ConfigureAwait …
我正在实施一个聊天室.到目前为止,这么好 - 用户可以通过JS客户端从他们的浏览器发送消息,我可以使用C#客户端做同样的事情 - 这些消息被广播给其他用户.现在,我正在尝试实施"在线用户".
我的方法如下:
OnConnected
- 将数据库中的用户更新为IsOnline = trueOnDisconnected
- 如果用户没有任何其他连接,请更新数据库中的用户 IsOnline = false
我遇到的问题是OnDisconnected
并不总是为每个客户端ID调用 - 过时的连接阻止"如果用户没有任何其他连接"位解析为true,那么用户总是"在线" ".
我能想到的一个hacky解决方案是始终在db中将用户设置为脱机OnDisconnect
- 但这意味着如果用户打开两个选项卡并关闭一个选项卡,它们将"脱机".然后,我可以将用户重新设置为联机以获取发送的每条消息,但这似乎完全浪费了处理周期,并且仍然留下了一段时间,当用户真正在线时,用户被视为离线.
我相信,如果有办法保证为每个客户端调用OnDisconnected,这个问题就会消失.它看起来就像如果我离开的客户打开很长一段时间(> 10分钟),然后断开,OnDisconnected
不会被调用.我会尽力确定repro步骤并保持更新.
那么 - 这是处理在线状态的有效方法吗?如果是这样,还有什么可以做的,以确保OnDisconnected
最终为每个连接触发?
这个问题让我担心,因为现有的Connections会随着时间的推移而继续增长,如果我没有弄错的话,最终因为未处理的状态连接而溢出.
码:
我正在使用内存中的分组方法.
发送消息(C#):
private readonly static ConnectionMapping<string> _chatConnections =
new ConnectionMapping<string>();
public void SendChatMessage(string key, ChatMessageViewModel message) {
message.HtmlContent = _compiler.Transform(message.HtmlContent);
foreach (var connectionId in _chatConnections.GetConnections(key)) {
Clients.Client(connectionId).addChatMessage(JsonConvert.SerializeObject(message).SanitizeData());
}
}
Run Code Online (Sandbox Code Playgroud)
国家管理:
public override Task …
Run Code Online (Sandbox Code Playgroud) 我现在通过localhost:5252本地服务我的MVC应用程序.
我正在尝试通过让localhost和contoso.localhost指向我的Web应用程序实例来设置我的应用程序来测试多租户.
我使用相应的条目设置我的hosts文件:
127.0.0.1 contoso.localhost
Run Code Online (Sandbox Code Playgroud)
但是我不确定我还需要做些什么才能完成这项工作.现在我在导航时只获得一个标准的IIS8页面,即使我在IIS管理器中没有做任何事情.
我试图避免在本地使用IIS,因为一切都在使用IISExpress.有没有简单的方法来实现这一目标?
我正在尝试将一些常量添加到我的数据库中:
context.Stages.AddOrUpdate(s => s.Name,
new Stage()
{
Name = "Seven",
Span = new TimeSpan(2, 0, 0),
StageId = 7
});
context.Stages.AddOrUpdate(s => s.Name,
new Stage()
{
Name = "Eight",
Span = new TimeSpan(1, 0, 0, 0),
StageId = 8
});
Run Code Online (Sandbox Code Playgroud)
这是我的用于EF Codefirst Migrations的Seed()函数.它在第八阶段失败,具体如下:
System.Data.UpdateException:更新条目时发生错误.有关详细信息,请参阅内部异常 ---> System.OverflowException:SqlDbType.Time溢出.值'1.00:00:00'超出范围.必须在00:00:00.0000000和23:59:59.9999999之间.
为什么我无法使用EF存储时间跨度?我真的希望我不需要在这两端做一些愚蠢的时间转换...
给出以下代码:
<input data-bind="event: { change: uploadImage(this.files[0]) }" style="width: 10px;" type="file">
Run Code Online (Sandbox Code Playgroud)
我收到错误提示"文件未定义".我正在尝试转换此演示:
https://github.com/paulrouget/miniuploader/blob/gh-pages/index.html
对于淘汰赛友好的实施.加载页面时发生错误.知道如何访问该文件,如果用户指定的话?
jsfiddle:http://jsfiddle.net/LkqTU/9597/
我有一个使用WebAPI构建的Web服务,它接受JSON请求并相应地响应.核心架构已构建,但没有任何身份验证/授权.
经过大量的谷歌搜索和示范项目,我不知道从哪里开始.我发现了2008年和2009年的大量资料,但没有为WebAPI /单页应用程序提供大量最新的指南/工作流程.我认为工作流程应该如下:
检查用户是否已登录:如何使用javascript完成此操作?我是否将cookie发送到我的webAPI?如果是这样,我是否将该cookie作为参数发送到请求正文中?
让用户登录/注册:这些数据如何加密/解密?当然我不能通过线路发送密码......这是SSL进来的地方吗?
让他们访问他们有权访问的内容:我想我得到了这个 - 我可以在每个请求的基础上在控制器中进行授权.
任何信息都会很棒.
I've tried following this post but I'm still not quite there:
CORS support for PUT and DELETE with ASP.NET Web API
In my web.config I have the following:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<httpProtocol>
<customHeaders>
<!-- TODO: don't let anyone make requests - only approved clients -->
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="WebDAV" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." …
Run Code Online (Sandbox Code Playgroud) 根据这个问题的答案:
我试图在不使用Compare或ToLower的情况下进行不区分大小写的比较:
var user = db.Users.FirstOrDefault(s => String.Equals(s.Username, username, StringComparison.OrdinalIgnoreCase));
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
为调用方法'Boolean Equals(System.String,System.String,System.StringComparison)提供的参数数量不正确
我究竟做错了什么?
c# ×4
.net ×3
asp.net ×2
asp.net-mvc ×1
asynchronous ×1
iis ×1
iis-express ×1
knockout.js ×1
linq ×1
linq-to-sql ×1
localhost ×1
messages ×1
mouseover ×1
signalr ×1
signalr-hub ×1
sticky ×1
toastr ×1