我有一个应用程序,它将大量数据读入内存并批量处理.
我想要的是实体框架DbUpdateConcurrencyException在删除已删除的实体时忽略.
原因是,当一个实体被处理并标记为删除时,它可能已经从数据库中删除.
不经意地删除已经删除的行不是问题,不应该导致错误,我只需要一种方法告诉实体框架:)
例
Db.Entry(itemToRemove).State = EntityState.Deleted;
Db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
如果itemToRemove已被删除则导致错误.
注意:Db.Configuration.ValidateOnSaveEnabled = false;不会修复此问题,因为另一个线程建议.
我正在使用require js来加载谷歌分析.在配置中我有
requirejs.config({
"paths": {
"ga": "//www.google-analytics.com/analytics",
...
我有一个依赖于初始化分析的模块.
一切正常,直到有人使用阻止谷歌分析的浏览器插件.当发生这种情况时,由此产生的javascript错误会破坏一切.
如果某个模块无法加载,我怎么能告诉requirejs不适合?如何使模块可选?
谢谢.
我们正在尝试使用标准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) 从核心 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)
为每个页面上的每个链接指定此项将非常乏味。
有没有办法覆盖标签助手以自动将当前文化包含在路由值中?