这是在使用Chrome版本72.0.3626.109(正式版本)(64位)的asp.net网络表单应用程序上发生的。
该站点受密码保护。用户使用用户名和密码登录。成功登录后,用户将被重定向到“贷款搜索”页面。贷款搜索页面包含少量文本输入。
问题是Chrome会将我的用户名自动填充到其中一个文本输入中(见图片)。“ tregan”是我在登录页面中输入的用户名。
Chrome始终会选择此特定的文本输入来自动填充用户名(“联系邮件地址”)。这是我本人以及我们网站的其他数十名用户所发生的。
您知道Chrome为什么要执行此自动填充功能吗,有什么我可以防止的方法吗?我清除了Chrome自动填充缓存,但这并不能解决问题。
我正在使用LINQ To Sql(非实体框架),System.Data.Linq.DataContext库,访问SQL Server 2005数据库并使用.Net Framework 4.
表dbo.Dogs有一个CHAR(1)NULL类型的"Active"列.如果我直接写SQL,查询将是:
SELECT * FROM dbo.Dogs where Active = 'A';
Run Code Online (Sandbox Code Playgroud)
LINQ查询是这样的:
from d in myDataContext.Dogs where d.Active == 'A' select d;
Run Code Online (Sandbox Code Playgroud)
从上面的LINQ查询生成的SQL将Active字段转换为UNICODE.这意味着我无法在dbo.Dogs.Active列上使用索引,从而显着减慢查询速度:
SELECT [t0].Name, [t0].Active
FROM [dbo].[Dog] AS [t0]
WHERE UNICODE([t0].[Active]) = @p1
Run Code Online (Sandbox Code Playgroud)
有什么办法可以阻止Linq到Sql插入那个UNICODE()调用(从而失去了我对dogs.Active索引的好处)吗?我尝试使用EntityFunctions.AsNonUnicode()方法包装参数,但这没有用(它在生成的sql中将一个CONVERT()插入NVARCHAR而不是UNICODE()),例如:
...where d.Active.ToString() == EntityFunctions.AsNonUnicode('A'.ToString());
Run Code Online (Sandbox Code Playgroud) 我最近从 VS 2017 升级到了 VS 2019。
在 VS 2017 中,当在本地运行 asp.net 应用程序时,使用 Chrome,我可以在 javascript 代码中放置一个断点,调试器将在断点处停止。这不再适用于 Visual Studio 2019。
我需要做什么才能使用 Chrome 在 Visual Studio 2019 中启用 javascript 调试?我希望能够在 javascript 文件中放置断点并让它们命中。
这是我的设置。
javascript visual-studio-debugging chrome-debugging visual-studio-2019
在IIS(6或7)中,当禁用目录浏览时,IIS在检测到尝试浏览目录时返回"403 - 禁止"错误(例如" http://mydomain.com/folder ").
有没有办法配置IIS以返回"404 - Not Found"错误而不是"403"用于目录浏览尝试?
这是一个asp.net webforms网站.
我们网站的安全扫描指出,返回"403"可以帮助恶意人员映射我们的网站; 之前没有想到这一点,但我不得不承认这是有道理的.
使用Visual Studio 2013,我将混合的Asp.Net Webforms/MVC 3 Web应用程序迁移到Asp.Net Webforms/MVC 5.1.作为迁移的一部分,我使用NuGet包管理器将Jquery从1.9.1升级到2.1.1.
当我在Chrome中的Visual Studio 2013调试器中运行应用程序时,我没有问题.
当我在IE 9中的Visual Studio 2013调试器中运行应用程序(兼容模式未启用)时,首先加载具有这两个脚本标记的母版页:
<script src="/Scripts/jquery-2.1.1.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui-1.10.4.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
它失败了这个Javascript错误:
Unhandled exception at line 3425, column 4 in http://localhost:25378/Scripts/jquery-2.1.1.js
0x800a01b6 - Microsoft JScript runtime error: Object doesn't support property or method 'addEventListener'
Run Code Online (Sandbox Code Playgroud)
我意识到Jquery 2不适用于IE 8及更低版本,但我找不到任何记录IE 9任何问题的文档.
该错误发生在jQuery.ready.promise函数内的jquery-2.1.1.js的第3425行:
document.addEventListener( "DOMContentLoaded", completed, false );
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我停止错误时,检查调试器中的文档对象并展开"方法"节点,我可以看到"addEventListener"方法.就好像Jquery没有权限看到这个方法.
我非常想升级到Jquery 2,从我读过的所有内容中,Jquery 2应该可以使用IE9.有关解决此问题的任何建议吗?
在 ASP.NET Core 应用程序中,我有一个依赖项注入的缓存服务,它本质上是内置 MemoryCache 的包装器。
下面是被缓存的示例类,它包含 Web 应用程序始终使用的一些枚举的列表:
public class GetEnums
{
public List<MyEnum1> Ones { get; set; }
public List<MyEnum2> Twos { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
下面是我的缓存服务类上的示例方法调用,它只是检索 GetEnums 类:
public class CacheService: ICacheService
{
private IMemoryCache MemoryCache {get;set;}
public CacheService(IMemoryCache memoryCache)
{
MemoryCache = memoryCache;
}
public GetEnums GetEnums()
{
if (MemoryCache.TryGetValue("GetEnums", out GetEnums getEnums))
return getEnums;
getEnums = MyRepository.GetEnums();
MemoryCache.Set(CacheKeys.GetEnums, getEnums, _enumMemoryCacheEntryOptions);
return getEnums;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的ConfigureServices 方法中,我想让此类成为依赖项注入服务。我应该使用 AddScoped 还是 AddSingleton?也就是说,我应该这样做吗?
services.AddScoped(<ICacheService,CacheService>);
Run Code Online (Sandbox Code Playgroud)
或这个?
services.AddSingleton(<ICacheService,CacheService>);
Run Code Online (Sandbox Code Playgroud)
我有两个问题。
一,如果我选择 AddScoped:我的猜测是,由于我的缓存服务类只是 …
我希望我的 .Net Core 5 控制台应用程序根据 DOTNET_ENVIRONMENT 环境变量从相应的 appsettings 文件中选择设置。我通过在 Visual Studio 2019 调试器中运行它并从 launchSettings.json 文件中获取环境来对此进行测试。
在 .Net Core 5 控制台应用程序中,我有 4 个“appsettings”文件:
每个文件属性都设置为“构建操作:内容”和“复制到输出目录:如果较新则复制”。
在我的 launchSettings.json 中,我将环境设置为“Staging”,如下所示:
{
"profiles": {
"MyAppName": {
"commandName": "Project",
"dotnetRunMessages": "true",
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Staging"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要访问 Program.cs 中“Main”方法中的配置,因此在该类中我设置了一个模块级字符串变量“_environment”,如下所示在静态构造函数中:
_environment = Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT");
Run Code Online (Sandbox Code Playgroud)
这有效;值“Staging”被加载到变量 _environment 中。
然后,我将配置加载到静态变量中,如下所示:(编辑 - 这是我的错误,假设此静态属性在静态构造函数之后加载。事实上,它在静态构造函数之前加载。这意味着未设置 _environment 变量,这意味着我的环境特定的应用程序设置文件从未加载)。
private static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{_environment}.json", optional: true, …Run Code Online (Sandbox Code Playgroud) 似乎有两种方法使用"attach"方法更新断开连接的Entity Framework实体.
方法一是简单地将断开连接的实体的状态设置为已修改:
myDbContext.Dogs.Attach(dog);
myDbContext.Entry(dog).State = EntityState.Modified;
myDbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
这将保存"dog"对象上的所有字段.但是你说你是在一个mvc网页上做的,你只允许编辑Dog.Name,页面上唯一的Dog属性是Name.然后可以做方法二:
myDbContext.Dogs.Attach(dog);
myDbContext.Entry(dog).Property(o => o.Name).CurrentValue = dog.Name;
myDbContext.Entry(dog).Property(o => o.Name).IsModified = true;
myDbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
当有许多属性需要更新时,方法二可能会变得非常冗长.这促使我尝试方法三,在我不想改变的属性上设置IsModified = false.这不起作用,抛出运行时错误"不支持修改属性的设置IsModified为false":
myDbContext.Dogs.Attach(dog);
myDbContext.Entry(dog).State = EntityState.Modified;
myDbContext.Entry(dog).Property(o => o.Owner).IsModified = false;
myDbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我更喜欢在任何地方使用Method One,但是在很多情况下我的asp.net mvc视图不包含Dog类的每个标量属性.
我的问题是:
PS我知道另一种方法,不使用"附加",只需从数据库中获取一个新对象,更新所需的属性,然后保存.这就是我正在做的事情,但我很好奇是否有一种方法可以使用"附加",从而避免额外的数据库访问,但这样做的方式不像上面的方法二那么冗长.通过"获取一个新鲜的对象"我的意思是:
Dog dbDog = myDbContext.Dogs.FirstOrDefault(d => d.ID = dog.ID);
dbDog.Name = dog.Name;
myDbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud) 使用Visual Studio 2013,我将混合的Asp.Net Webforms/MVC 3/Framework 4.0 Web应用程序迁移到Asp.Net Webforms/MVC 5.2.2/Framework 4.5.1.
我按照这些链接中列出的步骤操作:
当我在visual studio中运行应用程序时,我收到此错误:
尝试通过安全透明方法'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()'来访问安全关键方法'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly,System.String)'失败.
我尝试过在StackOverflow上找到的这些建议,但没有解决问题:
如何找到这个错误的原因的任何建议将非常感激.
错误的完整堆栈跟踪:
[MethodAccessException: Attempt by security transparent method 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' to access security critical method 'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly, System.String)' failed.]
System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule() +96
System.Web.WebPages.Administration.PreApplicationStartCode.Start() +41
[InvalidOperationException: The pre-application start initialization method Start on type System.Web.WebPages.Administration.PreApplicationStartCode threw an exception with the following error message: Attempt by security transparent method 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' to access security critical method 'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly, System.String)' failed..]
System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) +559
System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 …Run Code Online (Sandbox Code Playgroud) 我的愿望是创建一个MVC控制器Action,它可以异步执行长时间运行的i/o操作.我的目标是避免在这个长时间运行的方法完成时绑定ASP.Net线程池中的线程.
该行动打了两个电话.
第一个调用是第三方dll,它不包含任何异步方法.这个DLL从专有数据库读取并执行相当复杂的cpu绑定处理.返回可能需要几秒钟的时间.
第二个调用使用第一个调用的结果作为使用Entity Framework传递给数据库查询的参数.
简化,这是动作:
public async Task<ActionResult> MyActionAsync(arg1, arg2)
{
var parameters = 3rdPartyComponent.TakesLongTime(arg1, arg2);
Task<List<MyClass>> genericList = null;
using (DbContexts.MyDbContext db = new DbContexts.MyDbContext())
{
genericList = await db.Database.SqlQuery<MyClass>(sql,parameters).ToListAsync();
}
return View("MyView", genericList);
}
Run Code Online (Sandbox Code Playgroud)
我想打电话给3rdPartyComponent等待.我最初的想法是这样做:
var parameters = await Task.Run(() => 3rdPartyComponent.TakesLongTime()).ConfigurateAwait(false);
Run Code Online (Sandbox Code Playgroud)
但我已经阅读了几位主题专家明确表示在asp.net MVC Action中使用Task.Run()会适得其反,永远不应该这样做.
3rdPartyComponent是一个黑盒子的编译代码,它不能改变添加异步方法.
是否有任何方法可以调用3rdPartyComponent,以便整个Action运行而不会占用asp.net线程池中的线程?
asp.net-mvc ×3
c# ×3
asp.net ×2
javascript ×2
.net ×1
.net-5 ×1
.net-core ×1
appsettings ×1
asp.net-core ×1
async-await ×1
autofill ×1
caching ×1
iis ×1
jquery ×1
jquery-2.0 ×1
linq-to-sql ×1