C#的新手,并在第一次尝试使用Round方法时遇到此编译错误.有任何想法吗?谢谢:
private void totalPoundsTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox textBox = textBoxes[1];
decimal numericValue = textBoxNumberCheck(textBox, 0M, 22046M,false);
if (numericValue >= 0)
***weight.Kilos = decimal.Round(numericValue / 2.2046M, 2, MidpointRounding.AwayFromZero);***
UpdateBoxValues();
}
Run Code Online (Sandbox Code Playgroud) 我app.UseExceptionHandler(GlobalErrorHandler)在AspNetCore中使用,之后是一个自定义中间件.单独使用它们时它们可以正常工作,但是当同时使用它们时,异常会在我的自定义中间件中抛出并导致调用崩溃.发生这种情况await _next.Invoke(context).我也尝试使用ExceptionFilter,但结果相同.我的全局异常处理看起来像这样.有没有办法阻止异常冒泡?
app.UseCustomMiddleware();
app.UseExceptionHandler(GlobalErrorHandler);
app.UseMvc();
private void GlobalErrorHandler(IApplicationBuilder applicationBuilder)
{
applicationBuilder.Run(
async context =>
{
context.Response.ContentType = "text/html";
var ex = context.Features.Get<IExceptionHandlerFeature>();
if (ex != null)
{
string errorMessage;
var webFault = ex.Error as WebFaultException<string>;
if (webFault != null)
{
context.Response.StatusCode = (int)webFault.StatusCode;
errorMessage = webFault.Detail;
}
else
{
if (ex.Error is UnauthorizedAccessException)
{
context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
errorMessage = string.Empty;
}
else
{
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
errorMessage = ex.Error.Message + new StackTrace(ex.Error, true).GetFrame(0).ToString();
}
_logger.Error(errorMessage, ex.Error); …Run Code Online (Sandbox Code Playgroud) 我用 C# 学习 mongodb,我想创建一个包含实体列表的记录,但子实体没有生成他的对象 ID。
这是我的代码:
public class Curso
{
[BsonId]
public ObjectId _id { get; set; }
[BsonElement("descripcion")]
public string descripcion { get; set; }
[BsonElement("horas")]
public int horas { get; set; }
[BsonElement("alumnos")]
public IEnumerable<Alumno> alumnos { get; set; }
public Curso()
{
}
}
Run Code Online (Sandbox Code Playgroud)
校友实体:
public class Alumno
{
[BsonId]
public ObjectId _id { get; set; }
[BsonElement("name")]
public string name { get; set; }
[BsonElement("age")]
public int age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我插入了一个新课程,自动生成 id Curso …
我正在尝试学习如何将Add Jwt用于我正在使用的API.我已经介绍了如何使用Jwt构建API.我的应用程序现在确实生成了Jwt代码但是当我调用API的Authorize部分时,使用Authorization标头和Bearer使用post man我得到401 Unauthrized响应.我的代码是
StattUp.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
/**/
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidAudience = Configuration["Jwt:Issuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
}; …Run Code Online (Sandbox Code Playgroud) 我们正在使用UseStatusCodePagesWithReExecute中与设置一个简单的自定义中间件组合Response.StatusCode来500,成功地将用户引导至我们的自定义错误页上发生在MVC控制器例外.
但是,对于在razor/cshtml视图中发生的异常,UseStatusCodePagesWithReExecute不会将用户发送到我们的错误页面(尽管我们的自定义中间件会检测到这些异常Invoke()).
我们也尝试使用异常过滤器,但它只捕获控制器操作的异常,而不是视图.
如果异常来自视图,有没有办法将用户发送到我们的错误页面?
用3个参数注册通用类的方法是什么
public interface ITest<T,V,VE>
{
}
public class TestRespository<T,V,VE>:ITest<T,V,VE>
{
}
Run Code Online (Sandbox Code Playgroud)
我是这样注册的
services.AddScoped(typeof(ITest<,,>), typeof(ITest<,,>));
Run Code Online (Sandbox Code Playgroud)
但无法进入构造函数以及
service.GetService(typeof(ITest<TestClass, vTestClass, VETestClass>)) as ITest<TestClass, vTestClass, VETestClass>;
Run Code Online (Sandbox Code Playgroud) 我在 IoC 方面遇到了一些麻烦 - 特别是使用 Unity。
假设我有一个应用程序要用来发送电子邮件。我会像这样建模:
public interface IEmailSender
{
void SendEmail();
}
Run Code Online (Sandbox Code Playgroud)
然后创建接口的一些实现:
public class GmailEmailSender : IEmailSender
{
public void SendEmail()
{
//code to send email using Gmail
}
}
public class YahooEmailSender : IEmailSender
{
public void SendEmail()
{
//code to send email using Yahoo
}
}
Run Code Online (Sandbox Code Playgroud)
我还有一门课来实际发送电子邮件
public class EmailSender
{
IEmailSender _emailSender;
public EmailSender(IEmailSender emailSender)
{
_emailSender= emailSender;
}
public void Send()
{
_emailSender.SendEmail();
}
}
Run Code Online (Sandbox Code Playgroud)
所以我了解如何配置 Unity 以始终使用其中一种实现:
IUnityContainer container = new UnityContainer().RegisterType<IEmailSender, …Run Code Online (Sandbox Code Playgroud) c# dependency-injection inversion-of-control unity-container