使用moment.js和moment-timezone.js时,获取客户端时区并将其转换为其他时区的最佳方法是什么?
我想找出什么是客户时区,然后将其日期和时间转换为其他时区.
有没有人有这方面的经验?
我试图建立我的自定义过滤器进行身份验证,但我对当我尝试运行我的WebAPI解决这个问题正在运行:
给定的过滤器实例必须实现以下一个或多个过滤器接口:System.Web.Mvc.IAuthorizationFilter,System.Web.Mvc.IActionFilter,System.Web.Mvc.IResultFilter,System.Web.Mvc.IExceptionFilter,System.Web .Mvc.Filters.IAuthenticationFilter.
FilterConfig类中发生错误:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthAttribute());
}
}
Run Code Online (Sandbox Code Playgroud)
在我尝试将AuthAttribute添加到过滤器的行中.
这是整个AuthAttribute类:
using Examino.Business;
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.IdentityModel;
using System.IdentityModel.Tokens;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Web;
using System.Web.Http;
using System.Web.Http.Controllers;
namespace Examino.API.Filters
{
public class AuthAttribute : AuthorizeAttribute
{
public ITokenProviderService TokenProviderService { get; set; }
public override void OnAuthorization(HttpActionContext actionContext)
{
SetDependencies(actionContext);
if (!IsAuthorized(actionContext) && !SkipAuthorization(actionContext))
{
if (Authenticate(actionContext) == AuthenticationErrors.UNAUTHORIZED) …
Run Code Online (Sandbox Code Playgroud) 如何删除我在git repo上存储的所有文件和文件夹,但保留存储库?是否有一些重启git repo的命令?我已经找到了很多这方面的例子,但是我做得更糟.存储库已链接.所以如果有人愿意一步一步向我解释,我会非常感激.
我想做简单的事情,忽略.suo文件和bin和obj文件夹提交到git repo.我创建了.gitignore文件,它适用于bin和obj文件夹,但它一直允许.suo文件提交.gitignore的内容很简单:
/build/
*.suo
*.user
_ReSharper.*/
*.sdf
bin/
obj/
Debug/
Release/
*.opensdf
*.tlog
*.log
TestResult.xml
*.VisualState.xml
Version.cs
Version.h
Version.cpp
Run Code Online (Sandbox Code Playgroud)
首先我认为问题是.suo文件已经在repo上了,所以我使用了一组git命令将它从repo中删除:
git rm "file.suo"
git commit -m "suo removed"
git pull origin master
git push origin master
Run Code Online (Sandbox Code Playgroud)
一切顺利,.suo在本地删除,它从repo中删除,并在下一次提交时再次被推送到repo.
在图片上提交.suo文件.
有没有人有这样的问题?如何解决这类问题?
有没有比我正在尝试的更有效的方法来构建HTML表格?
我得到一个对象,它有一些实体列表.所以我需要通过它们中的每一个并首先构建一个单元格,然后将其添加到一行,最后将其添加到表中.
我正在尝试的东西是完全混乱,有点工作,但它有太多冗余的代码.
public static string CreateNotificationMailMessage(NotificationMailMessage mailMessageObject)
{
var table = new HtmlTable();
var mailMessage = new StringBuilder();
string html;
if (mailMessageObject.InvalidCompanies.Any())
{
HtmlTableRow row;
HtmlTableCell cell;
foreach (var invalidCompany in mailMessageObject.InvalidCompanies)
{
row = new HtmlTableRow();
cell = new HtmlTableCell();
cell.InnerText = invalidCompany.BusinessName;
row.Cells.Add(cell);
cell.InnerText = invalidCompany.SwiftBIC;
row.Cells.Add(cell);
cell.InnerText = invalidCompany.IBAN;
row.Cells.Add(cell);
table.Rows.Add(row);
}
}
using (var sw = new StringWriter())
{
table.RenderControl(new HtmlTextWriter(sw));
html = sw.ToString();
}
mailMessage.AppendFormat(html);
return mailMessage.ToString();
}
Run Code Online (Sandbox Code Playgroud)
最后,我想返回创建的HTML表格的文本版本.问题是我有比3(BusinessName,SwiftBIC和IBAN)更多的属性,而且我在mailMessageObject中还有一个对象列表,所以代码会很糟糕.
有人知道如何以更简单,更清洁的方式解决这个问题吗?
我知道这应该很简单,但我无法在网上找到关于这个主题的正确教程或解释.有很多关于使用代码优先方法向现有表添加新列的视频和帖子,但是我找不到任何关于如何将整个新表添加到现有数据库中的分步说明.这很奇怪,我很确定我会找到很多例子.也许我的搜索条件很差.所以如果有人有任何好的链接或视频,请分享.
我想要做的是将表Post添加到由MVC 5项目创建的现有默认数据库中.我先创建了模型类,将其命名为Post,它有一个简单的定义:
public class Post
{
[Key]
public int PostId { get; set; }
public string PostText { get; set; }
public byte[] ImagePost { get; set; }
public byte[] FilePost { get; set; }
public string TextPost { get; set; }
public string UserId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我先怀疑.我知道我应该创建DbContext,但是如果我想要访问现有数据库,我是否应该使用现有的DbContext,默认情况下已经在Web.config文件中创建,如下所示:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-StudentBookApp-20150114035149.mdf;Initial Catalog=aspnet-StudentBookApp-20150114035149;Integrated Security=True"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
或者我应该使用为Post类创建的所有新的DbContext?
无论如何我都试过了,但没有成功.当我创建这个新的上下文时,我在PMC中做了以下事情:
Enable-Migrations
Add-Migration "PostMigration"
Update-Database
Run Code Online (Sandbox Code Playgroud)
通常,或者一切顺利,但我没有在数据库中获得任何新表,或者我收到错误:AspNetUsers已经存在,而AspNetUsers是我通过向其添加新列而更改的自动创建的表之一.
更新:我现在的上下文是在名为PostContext的分隔类中,它看起来像这样:
public class PostContext : DbContext
{
public PostContext() : base("name=PostContext")
{
} …
Run Code Online (Sandbox Code Playgroud) 是否可以更改 DataTable 中的行顺序,例如当前索引为 5 的行移动到索引为 3 的位置,等等?
我有这个遗留的、混乱的代码,其中下拉菜单从 DataTable 获取它的值,而 DataTable 从数据库获取它的值。不可能对数据库进行更改,因为它有太多的列和条目。我最初的想法是在数据库中添加新列并按其值排序,但这会很困难。
因此,由于这只是向用户展示的问题,我想只切换该数据表中的行顺序。有人知道在 C# 中执行此操作的最佳方法吗?
这是我当前的代码:
DataTable result = flokkurDao.GetMCCHABAKflokka("MSCODE");
foreach (DataRow row in result.Rows)
{
m_cboReasonCode.Properties.Items.Add(row["FLOKKUR"].ToString().Trim() + " - " + row["SKYRING"]);
}
Run Code Online (Sandbox Code Playgroud)
例如,我想将行 2011 - 先前发放的信用推到数据表的顶部。
解决方案:
对于那些可能在 DataTable 中对行进行排序以及使用不支持 Linq 的过时技术时遇到问题的人,这可能会有所帮助:
DataRow firstSelectedRow = result.Rows[6];
DataRow firstNewRow = result.NewRow();
firstNewRow.ItemArray = firstSelectedRow.ItemArray; // copy data
result.Rows.Remove(firstSelectedRow);
result.Rows.InsertAt(firstNewRow, 0);
Run Code Online (Sandbox Code Playgroud)
您必须克隆行,删除它并使用新索引再次插入它。此代码将索引为 6 的行移动到 DataTable 中的第一位。
我正在尝试将新表添加到现有数据库中.该数据库由MVC 5项目自动创建.在尝试了许多不同的事情后,我没有成功将表Post添加到我的数据库中.
当我跑:
PM> Enable-Migrations -ContextTypeName StudentBookApp.Models.PostContext -Force
Run Code Online (Sandbox Code Playgroud)
我收到一条错误说:导航属性'PostText'不是'Post'类型的声明属性.验证它是否未从模型中明确排除,并且它是有效的导航属性.
我不明白这个错误,因为PostText它不是导航属性而且我不确定为什么实体框架认为它是.
这是我的Post类的定义,我在PostContext类的类中也是:
public class Post
{
[Key]
public int PostId { get; set; }
public string PostText { get; set; }
public byte[] ImagePost { get; set; }
public byte[] FilePost { get; set; }
public string TextPost { get; set; }
public string UserId { get; set; }
}
public class PostContext : DbContext
{
static PostContext()
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PostContext>());
}
public DbSet<Post> Posts { get; set; }
protected …
Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc ef-migrations entity-framework-6 asp.net-mvc-5
正如标题所暗示的那样,我对将所有与安全相关的代码(例如,JWT的代码,标准身份验证等)放到哪里最好的总体观点感兴趣。
我已经考虑了好一阵子了,但我不知道该在哪里找到合适的地方。
有人对此有任何经验吗?根据DDD,您对此正确的位置是什么?
我在我的项目中实现了IdentityServer4.在我运行它并使用Postman发送令牌请求后,我得到404状态代码未找到,即使URL存在.
我想使用Implicit grant_type,所以我只使用Basic Auth发送client_id.
问题还可能与OAuth 2的隐式流请求的格式有关.我已经理解,当您使用此流时,您唯一需要传递的是client_id并使用基本身份验证.也许我对那个错了?
在VisualStudio中,我可以看到请求来自IdentityServer
即使我去看看调试消息,我也看不到返回404的错误,我得到的就是:
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request starting HTTP/1.1 POST http://localhost:44305/baseurl/connect/token 0
Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Request","time":"2017-01-06T11:02:42.0216819Z","tags":{"ai.device.roleInstance":"DESKTOP-3TKHRTV","ai.operation.id":"p4f7oSz6Ng0=","ai.user.userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36","ai.operation.name":"POST /baseurl/connect/token","ai.internal.sdkVersion":"aspnet5c:1.0.0"},"data":{"baseType":"RequestData","baseData":{"ver":2,"id":"p4f7oSz6Ng0=","name":"POST /baseurl/connect/token","startTime":"2017-01-06T11:02:42.0216819+00:00","duration":"00:00:00.0028138","success":false,"responseCode":"404","url":"https://localhost:44305/baseurl/connect/token","httpMethod":"POST","properties":{"DeveloperMode":"true"}}}}
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request finished in 48.134ms 404
Run Code Online (Sandbox Code Playgroud)
IdentityServer的代码非常简单和标准:
public class Startup
{
private readonly IHostingEnvironment environment;
public Startup(IHostingEnvironment env)
{
environment = env;
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
if (env.IsDevelopment())
{
builder.AddApplicationInsightsSettings(developerMode: true);
}
Configuration = builder.Build();
} …
Run Code Online (Sandbox Code Playgroud)