我在将站点部署到服务器时遇到错误.当尝试加载主页,或在IIS中的新站点上访问身份验证时,我收到错误:
配置错误:此配置部分不能在此路径中使用.当该部分被锁定在父级别时会发生这种情况.锁定是默认情况下(overrideModeDefault ="Deny"),或由locationMode ="Deny"或遗留allowOverride ="false"的位置标记显式设置.
可以在此处找到更多详细信息,在场景7中匹配我的十六进制错误代码.
上面链接站点上给出的解决方案是在applicationHost.config文件中的错误中提到的部分中为allowModeDefault 设置Allow.就我而言,在system.webServer中的Security下.但是,如果我查看本地计算机上已正确部署该站点的applicationHost.config,该部分将设置为Deny.
如果这个解决方案是正确的,我的本地实例如何使用相同的web.config运行得很好?根据我的applicationHost.config,该部分应该被锁定,但事实并非如此.我宁愿不更改applicationHost.config文件,因为该服务器上还有许多其他站点正在运行.还有其他解决方案吗?
我有一个场景,我想在ValidationContext中添加一个项目,并在EF触发的实体验证中检查它.我在向导中执行此操作,因此我只能在特定步骤上验证某些内容.(如果有一个好的模式,请分享它).
问题是在控制器操作被击中之前,实际上会触发两次验证.我希望我理解为什么.在发生这种情况之前,我不确定如何在ValidationContext中获取该项,因此我无法告诉验证我正在进行哪一步.
此外,如果我只通过在下面的代码中检查项目来触发保存更改时才进行自定义验证,那么当页面刷新时我不会显示自动模型验证错误.
在我的自定义环境中:
public WizardStep Step { get; set; }
protected override DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry, IDictionary<object, object> items)
{
items.Add("ValidationStep", Step);
return base.ValidateEntity(entityEntry, items);
}
Run Code Online (Sandbox Code Playgroud)
设置实体的服务:
public void SaveChanges(WizardStep step)
{
_context.Step = step;
_context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
在我的实体
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
// Step will only be present when called from save changes. Calls from model state validation won't have it
if (validationContext.Items.ContainsKey("ValidationStep"))
{
var validationStep = (WizardStep)validationContext.Items["ValidationStep"];
if (validationStep == WizardStep.Introduction)
{
if (criteria)
{
yield return new …
Run Code Online (Sandbox Code Playgroud) 假设我有一千个类都继承了一个基类,并且这些类中的每一个(不是基类)都有一个表,每个表都有相同的必需列。如何使用反射或泛型在正确的表中添加或更新行?我会在运行时知道特定实体的名称。
有一些关于使用反射获取 dbset 的 stackoverflow 帖子,但答案会导致 IQueryable,您无法向其中添加新项目。那些海报似乎对此很满意,因为我想他们只是在获取数据。我需要一个 DbSet 以便我可以添加和更新。我可以获得完全限定的实体名称和类型,但是如何获得 DbSet 呢?我不想写一个 1000 行的 switch 语句:(