我过去曾经多次遇到这个问题,并最终决定找出原因.
StringSplitOptions.RemoveEmptyEntries会建议删除空条目.
那么为什么这个测试失败了呢?
var tags = "One, Two, , Three, Foo Bar, , Day , ";
var tagsSplit = tags.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Trim());
tagsSplit.ShouldEqual(new string[] {
"One",
"Two",
"Three",
"Foo Bar",
"Day"
});
Run Code Online (Sandbox Code Playgroud)
结果:
Values differ at index [2]
Expected string length 5 but was 0. Strings differ at index 0.
Expected: "Three"
But was: <string.Empty>
Run Code Online (Sandbox Code Playgroud)
所以它失败了,因为"Three"我们有一个空字符串 - 确切地说StringSplitOptions.RemoveEmptyEntries应该防止它.
在常规ASP.NET中,您可以在视图中执行此操作以确定当前请求是否来自localhost:
HttpContext.Current.Request.IsLocal
但我无法在ASP.NET 6/Core /中找到类似的内容.
当我尝试通过Visual Studio 2010在Windows Azure上发布我的Web应用程序时,我遇到了这个问题.我正在尝试通过右键单击项目并选择发布和导入从Windows Azure平台下载的发布配置文件.
我收到此错误:
错误1 Web部署任务失败.(无法连接到远程计算机("waws-prod-am2-001.publish.azurewebsites.windows.net").在远程计算机上,确保安装了Web Deploy并且确保了所需的进程("Web管理服务" ")已启动.请访问http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DESTINATION_NOT_REACHABLE了解详情.)0 0 MeraSungard
我有这样简单的SQL字符串:
"SELECT * FROM Office WHERE OfficeId IN @Ids"
Run Code Online (Sandbox Code Playgroud)
问题是@Ids名称是在编辑器中输入的,所以它可以是任何东西,我的问题是如果我想传入,比如一个整数数组,它只适用于Dapper如果我使用:
var values = new DynamicParameters();
values.AddDynamicParams(new { Ids = new[] { 100, 101 } });
Run Code Online (Sandbox Code Playgroud)
但这需要我知道参数名称是什么Ids,而在我的场景中并非如此.
我可以在Dapper中设置一个"动态参数",其名称为"动态",如下所示:
var values = new DynamicParameters();
values.Add("Ids", new[] { 100, 101 });
Run Code Online (Sandbox Code Playgroud)
但是,然后Dapper不IN (....)为每个值构造具有单独参数的SQL.
有没有办法构建传入的动态对象,AddDynamicParams但事先设置成员名称和值而不知道名称?
我可以修改Dapper源以适应我的场景,但如果有人知道一个更简单和优雅的解决方案,我会很高兴!
我编写一个SP作为参数列接受排序和方向.
我不想使用动态SQL.
问题是设置方向参数.
这是部分代码:
SET @OrderByColumn = 'AddedDate'
SET @OrderDirection = 1;
…
ORDER BY
CASE WHEN @OrderByColumn = 'AddedDate' THEN CONVERT(varchar(50), AddedDate)
WHEN @OrderByColumn = 'Visible' THEN CONVERT(varchar(2), Visible)
WHEN @OrderByColumn = 'AddedBy' THEN AddedBy
WHEN @OrderByColumn = 'Title' THEN Title
END
Run Code Online (Sandbox Code Playgroud) 所以jQuery模板永远不会超过beta,jsRender和jsViews应该填补空白.我查看了Boris Moore在此页面上发布的示例,但我没有区分jsRender和jsViews.此外,鲍里斯在另一个例子中使用了一个来增加混乱.所以问题是他们中的两个如何相关(或不同)?
在Visual Studio 2013中,当我格式化CSS代码(Ctrl+ K+ F)时,它有时会将我的CSS属性缩进到层次结构中.
例如:
.a {颜色:红色; } .b.*{color:blue; }
变为:
.a { color:red; }
.a .b {color:blue; }
Run Code Online (Sandbox Code Playgroud)
当我更喜欢:
.a {
color:red;
}
.a .b {
color:blue;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法修改Visual Studio以防止这种缩进?
当用户未登录时,我试图让ASP.NET Core Identity返回401.我已经[Authorize]为我的方法添加了一个属性,而不是返回401,它返回302.我已经尝试了很多建议但是似乎没什么用,包括services.Configure和app.UseCookieAuthentication设置LoginPath为null或PathString.Empty.
我想使用JWT保护ASP.NET Core Web API.另外,我想有一个选项,直接在控制器动作属性中使用来自令牌有效负载的角色.
现在,虽然我确实找到了如何将其与策略一起使用:
Authorize(Policy="CheckIfUserIsOfRoleX")
ControllerAction()...
Run Code Online (Sandbox Code Playgroud)
我想更好地选择使用通常的东西:
Authorize(Role="RoleX")
Run Code Online (Sandbox Code Playgroud)
其中Role将从JWT有效负载自动映射.
{
name: "somename",
roles: ["RoleX", "RoleY", "RoleZ"]
}
Run Code Online (Sandbox Code Playgroud)
那么,在ASP.NET Core中实现这一目标的最简单方法是什么?有没有办法通过一些设置/映射自动工作(如果是这样,在哪里设置它?)或者我应该在验证令牌后,拦截生成ClaimsIdentity并手动添加角色声明(如果是,在何处/如何操作)那?)?
我有以下代码类:
public class Foo
{
public Nested Bar { get; } = new Nested(this);
public class Nested
{
public Nested(Foo foo)
{
foo.DoSomething();
}
}
private void DoSomething()
{
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到此编译错误:
关键字'this'在当前上下文中不可用
我可以通过简单地不使用自动属性初始化器来修复它,并明确地将其移动到构造函数中:
public Nested Bar { get; }
public Foo()
{
this.Bar = new Nested(this);
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?是不是Auto-Property Initializer实际上转换为IL中的构造函数代码?
c# ×6
asp.net-core ×3
.net ×1
azure ×1
c#-4.0 ×1
case ×1
constructor ×1
css ×1
dapper ×1
javascript ×1
jquery ×1
jsrender ×1
jsviews ×1
oop ×1
split ×1
sql ×1
sql-order-by ×1
sql-server ×1
string ×1