小编her*_*ist的帖子

删除实体时如何忽略DbUpdateConcurrencyException

我有一个应用程序,它将大量数据读入内存并批量处理.

我想要的是实体框架DbUpdateConcurrencyException在删除已删除的实体时忽略.

原因是,当一个实体被处理并标记为删除时,它可能已经从数据库中删除.

不经意地删除已经删除的行不是问题,不应该导致错误,我只需要一种方法告诉实体框架:)

Db.Entry(itemToRemove).State = EntityState.Deleted;
Db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

如果itemToRemove已被删除则导致错误.

注意:Db.Configuration.ValidateOnSaveEnabled = false;不会修复此问题,因为另一个线程建议.

entity-framework

15
推荐指数
2
解决办法
1万
查看次数

如何在requirejs中处理被阻止的脚本

我正在使用require js来加载谷歌分析.在配置中我有

requirejs.config({ "paths": { "ga": "//www.google-analytics.com/analytics", ...

我有一个依赖于初始化分析的模块.

一切正常,直到有人使用阻止谷歌分析的浏览器插件.当发生这种情况时,由此产生的javascript错误会破坏一切.

  • 无法加载资源:被clien阻止
  • 未被捕获的错误:脚本错误:ga

如果某个模块无法加载,我怎么能告诉requirejs不适合?如何使模块可选?

谢谢.

javascript google-analytics requirejs

7
推荐指数
1
解决办法
1982
查看次数

什么可能导致GET Web请求上的"不支持证书密钥算法"异常

我们正在尝试使用标准webrequest从asp .net MVC 4.6应用程序连接到facebook api.除了我们的一台服务器之外,其他所有服 有问题的服务器正在运行Windows 2012和IIS 8.

在这个特定的服务器上,我们在向Facebook运行GET webrequest时会遇到以下异常.

不支持证书密钥算法.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.NotSupportedException:不支持证书密钥算法.

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

堆栈跟踪:

[NotSupportedException:不支持证书密钥算法.] System.Net.TlsStream.EndWrite(IAsyncResult asyncResult)+409 System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar)+213

[WebException:底层连接已关闭:发送时发生意外错误.]
System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)+894 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)+92

[HttpRequestException:发送请求时发生错误.]
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()+32
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+96 System.Runtime.CompilerServices.TaskAwaiter`1. GetResult()+49

代码如下所示:

    // Request
    private static async Task<T> Request<T>(string url) where T : class
    {
        using (var handler = new WebRequestHandler())
        {
            handler.ServerCertificateValidationCallback = delegate { return true; };
            using (var client = new HttpClient(handler) { Timeout = System.TimeSpan.FromSeconds(20) })
            {
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var result = await client.GetAsync(url);
                if …
Run Code Online (Sandbox Code Playgroud)

c# facebook-graph-api windows-server-2012

7
推荐指数
1
解决办法
2823
查看次数

在asp net core 3.1中使用RouteDataRequestCultureProvider

从核心 2.2 升级到 3.1 后,我无法让 RouteDataRequestCultureProvider 完全工作。

路由有效,但 razor 标签助手忽略了文化和使用文化的路由属性。

作为自定义路由属性的简单示例:

public class StaticPageController : Controller
{
    [Route("{culture:culture}/cookies")]
    public IActionResult Cookies() => View();
}
Run Code Online (Sandbox Code Playgroud)

如果我转到 url,则https://localhost:5002/en/cookies该操作将正确路由到。但是在剃刀中,如果我使用这样的助手:

<a asp-controller="StaticPage" asp-action="Cookies">Cookie information</a>
Run Code Online (Sandbox Code Playgroud)

它生成的结果链接是: https://localhost:5002/en/staticpage/cookies

在核心 2.2 中,这是正确生成的 url https://localhost:5002/en/cookies

路由数据字典正确包含一个文化条目,但剃刀助手不再使用它并且默认为默认路由模式:

app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapControllerRoute("default", "{culture:culture}/{controller=Home}/{action=Index}/{id?}");
        });
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么 razor 标签助手不再使用路由数据字典中的文化?

编辑:

我现在知道文化不会从路由值传递到 url 生成器,因为它被认为是环境的,并且从核心 2.2 开始,环境值不再包含在内。

当前请求的路由数据值被视为 ASP.NET Core 2.1 及更早版本中的环境值

我可以通过明确指定文化来解决这个问题:

 <a 
    asp-controller="StaticPage" 
    asp-action="Cookies" asp-route- 
    culture="@Context.Request.RouteValues["culture"]">
       Cookies
 </a>
Run Code Online (Sandbox Code Playgroud)

为每个页面上的每个链接指定此项将非常乏味。

有没有办法覆盖标签助手以自动将当前文化包含在路由值中?

c# localization razor asp.net-core-3.0

6
推荐指数
1
解决办法
2226
查看次数