在c#中,readonly成员可以简化为只读自动属性/表达式成员,对于不可变成员,表达式成员比使用readonly关键字更好吗?
使用readonly keywork:
public static readonly string COMPANY_NAME= "XYZ";
Run Code Online (Sandbox Code Playgroud)
使用表达身体的成员:
public static string COMPANY_NAME => "XYZ";
Run Code Online (Sandbox Code Playgroud)
我遇到过各种论坛和解决方案,建议表达身体的成员用于短手使用,我无法找到它在性能上的差异.
我正在使用ASP.NET Core Web API,我有多个独立的web api项目.在执行任何控制器的操作之前,我必须检查登录用户是否已经模仿其他用户(我可以从中获取DB)并且可以将模拟用户传递Id给actions.
由于这是一段可以重复使用的代码,我想我可以使用中间件:
public class GetImpersonatorMiddleware
{
private readonly RequestDelegate _next;
private IImpersonatorRepo _repo { get; set; }
public GetImpersonatorMiddleware(RequestDelegate next, IImpersonatorRepo imperRepo)
{
_next = next;
_repo = imperRepo;
}
public async Task Invoke(HttpContext context)
{
//get user id from identity Token
var userId = 1;
int impersonatedUserID = _repo.GetImpesonator(userId);
//how to pass the impersonatedUserID so it can be picked up from controllers
if (impersonatedUserID …Run Code Online (Sandbox Code Playgroud) c# middleware asp.net-core-mvc asp.net-core asp.net-core-webapi
在Windows上,对于.NET Framework类,我们可以指定sslkeyrepository为*SYSTEM/*USER.On 默认情况下linux.NET Core类在哪里搜索,certificates以及可能是什么值sslkeyrepository.
在MVC默认路由中
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)
无论何时访问索引操作,当访问"索引"操作时,URL都不显示操作名称.
我想在不同的控制器上获取该行为,该控制器检索单个项目的数据.我希望将默认操作命名为"get",对于此操作,我希望url不显示操作名称,只显示控制器和项目ID.
我认为与上面的路线类似,如下所示:
routes.MapRoute(
"item_details",
"item/{action}/{id}",
new { controller = "item", action = "Get" }
);
Run Code Online (Sandbox Code Playgroud)
会做的伎俩,但它给了我一个像localhost的网址:xxxx/item/Get/152 ...我错过了什么?
我有一个VS2012 MVC4解决方案,我测试Web API控制器.
我成功测试了GET,POST,PUT但DELETE仍然给我一个http 404错误.当我在api控制器中的'DeleteMovie'动作中设置断点时,永远不会到达断点.
我读了很多关于这个问题的帖子,但没有人帮助过我.
这是我的DELETE API控制器:
[HttpDelete]
public HttpResponseMessage DeleteMovie(int id)
{
// Delete the movie from the database
// Return status code
return new HttpResponseMessage(HttpStatusCode.NoContent);
}
Run Code Online (Sandbox Code Playgroud)
这是我的html页面:
<script type="text/javascript">
deleteMovie(1, function ()
{
alert("Movie deleted!");
});
function deleteMovie(id, callback) {
$.ajax({
url: "/api/Movie",
data: JSON.stringify({ id: id }),
type: "DELETE",
contentType: "application/json;charset=utf-8",
statusCode: {
204: function () {
callback();
}
}
});
}
</script>
Run Code Online (Sandbox Code Playgroud)
我的经典路线如下:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}", …Run Code Online (Sandbox Code Playgroud) c# asp.net asp.net-mvc asp.net-web-api asp.net-web-api-routing
我有 (2) Identity systems,每个都有自己的Context:
1: CustomerContext : IdentityDbContext<CustomerUser>
2: ApplicationContext : IdentityDbContext<ApplicationUser>
Run Code Online (Sandbox Code Playgroud)
我已经在 ASP.NET Core 3.0 API 启动文件中成功注册了它们。一个使用“AddIdentity”,另一个使用“AddIdentityCore”
我还向它们添加了“AddDefaultTokenProviders”。尽管它构建并运行,但当我尝试使用令牌提供程序时会出现问题,例如GenerateEmailConfirmationTokenAsync或GeneratePasswordResetTokenAsync。
如果我从注册中删除“AddDefaultTokenProviders”之一,那么使用令牌适用于带有“AddDefaultTokenProviders”的身份,当两者都包含 AddDefaultTokenProviders 时,两者都不起作用。我得到了这些例外(为简洁起见,我对它们进行了一些修剪):
System.NotSupportedException: No IUserTwoFactorTokenProvider named 'Default' is registered.
- at Microsoft.AspNetCore.Identity.UserManager.GenerateUserTokenAsync(GenerateEmailConfirmationTokenAsync)
OR
- at Microsoft.AspNetCore.Identity.UserManager.GenerateUserTokenAsync(GeneratePasswordResetTokenAsync)
Run Code Online (Sandbox Code Playgroud)
这些是 Startup.cs 中的身份注册:
客户用户
services.AddIdentity<CustomerUser, CustomerRole>(options =>
{
options.Password.RequiredLength = 6;
})
.AddEntityFrameworkStores<CustomerContext>()
.AddDefaultTokenProviders(); // <-- CANNOT HAVE (2)
Run Code Online (Sandbox Code Playgroud)
应用用户
var builder = services.AddIdentityCore<ApplicationUser>(options =>
{
options.Password.RequiredLength = 6;
});
builder = …Run Code Online (Sandbox Code Playgroud) 我想忽略多个通配符路由.使用asp.net mvc预览版4,它们附带:
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
我还想添加以下内容:
RouteTable.Routes.IgnoreRoute("Content/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
但这似乎打破了我的程序中生成网址的一些助手.思考?
所以我正在着手一个ASP.NET MVC项目,虽然整体经验很好,但我对控制器已经变成的意大利面条很不满意.我在网上看了看(CodeCampServer等等),他们似乎都遇到了同样的问题,其中控制器方法非常一致地违反SRP(单一责任原则) - 例如一个控制器方法,如果请求是简单的呈现视图如果是POST,则更新模型.现在我有控制器方法负责整个应用程序中的多个逻辑路由 - 比如它检查在表单上单击了哪个按钮并采取相应的行动.我可以使用JavaScript将每个按钮单击重定向到不同的表单操作,但是有些东西感觉不对...... 另一个大问题是魔术字符串的泛滥--ViewData ["foo"] = blah; 长话短说,你们如何构建控制器逻辑?每个视图一个巨型模型对象?路由器有很多小控制器方法和JavaScript吗?我的目标是可维护的代码 - 随着功能的积累,我开始滑下滑坡......
我已经安装nuget package manager了Swashbuckle.AspNetCore.Swagger并且已经Swashbuckle.AspNetCore.Swagger在顶部包含了 using ,但是我在Info{ Title}方法上遇到了错误。任何人都可以请建议如何解决这个问题。
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "My DAB API", Version = "V3.2.2" });
});
Run Code Online (Sandbox Code Playgroud) 当我使用Asp-bound field它时,它的工作完美
看column一个是Ellipsed
但是在使用template field link button它时它会返回空白
看到它是空白我不知道我应该怎么做在链接按钮列字段上应用相同的任何建议?
我script的Eclipsed
function pageLoad() {
var table = $('#gvTest ').DataTable({
select: true,
pageLength: 15,
lengthChange: false,
scrollY: "400px",
scrollX: true,
scrollCollapse: false,
order: [15],
fixedColumns: true,
columnDefs: [
{ targets: 0, render: $.fn.dataTable.render.ellipsis(7, true) },
{ targets: 1, render: $.fn.dataTable.render.ellipsis(10, true) },
],
fixedColumns: {
leftColumns: 1,
}
});
$('#BtnReport').click(function () {
var ids = $.map(table.rows('.selected').data(), function (item) {
return item[14];
});
var …Run Code Online (Sandbox Code Playgroud) c# ×10
asp.net-mvc ×4
asp.net ×3
asp.net-core ×3
.net-core ×1
c#-6.0 ×1
datatables ×1
javascript ×1
jquery ×1
middleware ×1
routing ×1
ssl ×1
swagger ×1
swashbuckle ×1