Articles of asp.net mvc

如何在MVC 5中设置自定义ClaimsPrincipal?

我创建了一个自定义主体类 public class FacebookPrincipal : ClaimsPrincipal { public JObject Data { get; set; } } 我想用它。 当用户登录时,我尝试设置 var fbP = new FacebookPrincipal { Data = user.Data }; Thread.CurrentPrincipal = fbP; AuthenticationManager.User = fbP; HttpContext.User = fbP; 它在我设置之后就可以正常工作,但是当我home/index该值就会丢失 var user = HttpContext.GetOwinContext().Authentication.User; var bbbb = this.User; var cccc = ClaimsPrincipal.Current; 所有上述方法都返回一个类型为ClaimsPrincipal的Principal,并且转换为FacebookPrincipal返回null。 如何设置自定义主体?

如何在ASP.NET中开发的Azure Web App上获取客户端的IP地址?

我开发了一个在Azure上部署为Web应用程序的Web应用程序。 我需要获取客户端的IP地址,以便我可以使用GeoIP API来获取客户端所连接的国家/地区。 所以这是我的问题,如何在发送查看主页的请求时获取客户端的IP地址? 我正在使用ASP.NET MVC。

ConnectionString属性尚未在update-database上初始化

在包管理器控制台中,我在azure上对我的数据库运行命令更新数据库,但是我收到错误,说ConnectionString属性尚未初始化。 我对本地数据库做了同样的事情,一切都很顺利。 在我的web配置中,我已经将连接字符串更改为mach我的azure数据库,这是我的数据库上下文的样子: public class MadLabsDatabaseContext : IdentityDbContext { public MadLabsDatabaseContext() : base(“DefaultConnection”) { Configuration.LazyLoadingEnabled = true; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity() .ToTable(“AspNetUsers”); modelBuilder.Entity() .ToTable(“AspNetUsers”); } } 这是web.config中的连接字符串: 这是我的Package Manager控制台代码: Update-database -ConnectionString “Data Source=tcp:serverName.database.windows.net,1433;Database=madLabs_db;User ID=userName;Password=password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True;” -ConnectionProviderName “System.Data.SqlClient” 为什么我收到此错误?

将特殊字符转换为正常

我需要一种方法来转换像这样的特殊字符: Helloæ 正常人物。 所以这个词最终会成为Helloae 。 到目前为止,我已经尝试过HttpUtility.Decode ,或者将UTF8转换为win1252的方法,但没有任何效果。 是否有一些简单而通用的东西可以完成这项工作? 谢谢。 编辑 我尝试使用OC上的post来实现这两种方法。 这是方法: public static string ConvertUTF8ToWin1252(string _source) { Encoding utf8 = new UTF8Encoding(); Encoding win1252 = Encoding.GetEncoding(1252); byte[] input = _source.ToUTF8ByteArray(); byte[] output = Encoding.Convert(utf8, win1252, input); return win1252.GetString(output); } // It should be noted that this method is expecting UTF-8 input only, // so […]

我应该在post或url中存储_method = PUT / DELETE

我正在使用ASP.NET MVC来构建RESTful Web应用程序,我计划通过POST隧道传递PUT和DELETE请求,因为它似乎是最实用的解决方法。 我想知道的是,我应该通过这样的url传递信息: 或者我应该通过发布的表单数据进行隧道传输,如下所示: 各自的优点和缺点是什么? 编辑:我提出这个问题的原因之一是我在某个地方读到将这样的信息放在url中是一件好事,因为post数据通常会丢失,但url会挂起(在日志文件中等) – 不幸的是它会使url看起来很难看

EF5中的UOW和存储库模式

这是关于我从这里找到的一些entity framework材料的一些混淆: https : //www.asp.net/ 在本页中,它解释了如何使用存储库包装dbcontext并使用工作类单元包装存储库: http : //www.asp.net/mvc/overview/older-versions/getting-started-with-ef使用-5–MVC-4 /实施最库和-单元的功图案-在-AN-ASP-净-MVC的应用程序 但是,在此页面上,它指出dbcontext已经是UOW模式和存储库模式的组合: https ://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext( v= vs.103)的.aspx 因此,如果dbcontext已经解决了这些模式解决的问题,为什么要用EF5重新实现这些模式呢? 此外,在本教程中,UnitOfWork类似乎没有显示UOW应该给出的任何好处。 例如,它声明:“这样,当一个工作单元完成后,您可以在该上下文实例上调用SaveChanges方法,并确保所有相关更改都将得到协调。” 但它似乎只是无缘无故地包装dbcontext。 我想我错过了一些东西。 我没有看到在这个实现中有任何协调……如果出现问题,事情如何“回滚”?

有没有办法使用HttpPostedFile类获得上传进度?

我想使用HttpPostedFile类从网页上传一个或多个大文件到ASP.NET MVC控制器。 使用此类,上载的大于256 KB的文件将缓冲到磁盘,而不是保存在服务器内存中。 我的理解是它可以这样做: if (context.Request.Files.Count > 0) { string tempFile = context.Request.PhysicalApplicationPath; for(int i = 0; i 0) { uploadFile.SaveAs(string.Format(“{0}{1}{2}”, tempFile,”Upload\\”, uploadFile.FileName)); } } } 有没有办法设置回调或使用其他方法,通过AJAX或JSON定期返回状态到网页,以便显示进度条和完成百分比? 代码会是什么样的?

如何检查修改了哪些属性/条目以及未修改哪些属性/条目在EF 6中编辑记录

我正在使用EF 6开发MVC 5应用程序。编辑的自动生成的POST方法是: public ActionResult Edit([Bind(Include = “Id,Name,Address,Phone,SSNo,D1”)] ABC abc) { if (ModelState.IsValid) { db.Entry(abc).State = EntityState.Modified; db.SaveChanges(); } return View(abc); } 是否有任何过程/方法可以获得哪些条目被修改以及这些条目的原始值是什么。 我已经尝试过在这个问题中标记为答案的方法,但是虽然已经进行了更改,但是它没有得到任何更改,即循环不会迭代。 我的代码是: public ActionResult Edit([Bind(Include = “Id,Name,Address,Phone,SSNo,D1”)] ABC abc) { if (ModelState.IsValid) { db.ABCs.Attach(abc); var myObjectState = ((IObjectContextAdapter)db).ObjectContext.ObjectStateManager.GetObjectStateEntry(abc); var modifiedProperties = myObjectState.GetModifiedProperties(); foreach (var propName in modifiedProperties) { Console.WriteLine(“Property {0} changed from […]

在MVC中对视图,控制器,模型进行分组

也许我错了,但我认真,我不喜欢MVC应用程序的当前结构,我认为在大项目上它将导致维护麻烦。 所以有没有办法将相关的控制器,视图,模型组合在一起,就像我有画廊模块我想要所有的控制器,视图,模型在图库文件夹下分组。

找不到类型或命名空间名称“OpenIddictDbContext ”

我有个问题。 我今天早上打开了我的项目并得到了错误: 找不到类型或命名空间名称’OpenIddictDbContext ‘(您是否缺少using指令或程序集引用?)[netcoreapp1.1] 我恢复并构建项目时发生此错误。 这很奇怪,因为我在我的project.json文件中有“OpenIddict”:“1.0.0- *” ,我正在使用引用: using OpenIddict ; 这个问题在我的项目中无处不在,因为他似乎没有认识到“使用OpenIddict” 如果它有帮助,这是我得到错误的例子(ApplicationDbContext.cs) namespace Overnight.Db { //the error: The type or namespace name ‘OpenIddictDbContext’ could not be found (are you missing a using directive or an assembly reference?) public class ApplicationDbContext : OpenIddictDbContext { 要么 //the error: ‘OpenIddictDbContext’ does not contain a constructor that takes […]