Tag: asp.net mvc

如何在ASP.NET中允许多种身份validation方法?

我正在构建一个新的ASP.NET MVC应用程序(在C#中),其中一个要求是创建一个新的成员数据库。 为此,我们需要角色来管理不同类型的成员和配置文件,以管理附加到每个成员的其他元数据。 到目前为止,只需使用标准的MembershipProvider,RoleProvider和ProfileProvider作为.NET Framework的一部分提供。 但是,问题是我想允许不同的身份validation方法。 我希望帐户和登录凭据具有一对多关系(一个帐户可以附加一些登录凭据)。 例如,用户可能同时将OpenID和ActiveDirectory帐户附加到其帐户。 但是,在尝试了几种方法之后,我们选择了MembershipProvider路线(解释了它是如何实现的,如下所示)。 我的问题是,人们之前是如何做到这一点的,以及人们如何建议我接近它? 它似乎是在很多网站上实现的东西,但在这里的搜索并没有返回任何可靠的东西。 编辑:在隔夜和今天早上四处寻找好几个小时之后 – 我仍然没有意识到屠杀一个会员提供者将是最简单的选择。 有多个MembershipProviders会产生相同的效果吗? BOUNTY EDIT:没有回复,我假设没有更好的解决方案,我发布的答案。 这是真的吗? 我正在提供奖励,试着看看是否有人对此有任何进一步的想法以及是否有更好的选择。 BOUNTY ACCEPT EDIT:我认为WIF是下面接受的答案,对于.NET 4版本和其他版本可能适用于3.5。 除此之外,也许一个被屠杀的MembershipProvider或改编的可能仍然是相关的。

没有ASP.NET标识的OWIN cookie身份validation

我是ASP.NET MVC 5的新手,我发现身份认证+授权框架非常不舒服。 我知道这是ASP.NET MVC框架的一个新function,所以我想在我的应用程序中应用另一种方法来实现身份validation。 可能吗? 我读过我可以使用FormsAuthenticationModule 。 这是一个很好的选择吗? 如何在基于MVC 5的应用程序中使用它?

转换自定义操作筛选器以供Web API使用?

我发现了一个非常好的动作filter,它将逗号分隔的参数转换为generics类型列表: http : //stevescodingblog.co.uk/fun-with-action-filters/ 我想使用它,但它不适用于ApiController,它完全忽略它。 有人可以帮助转换这个用于Web API吗? [AttributeUsage(AttributeTargets.Method)] public class SplitStringAttribute : ActionFilterAttribute { public string Parameter { get; set; } public string Delimiter { get; set; } public SplitStringAttribute() { Delimiter = “,”; } public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.ActionParameters.ContainsKey(this.Parameter)) { string value = null; var request = filterContext.RequestContext.HttpContext.Request; if (filterContext.RouteData.Values.ContainsKey(this.Parameter) && […]

在调用“WebSecurity”类的任何其他方法之前,必须调用“WebSecurity.InitializeDatabaseConnection”方法

每次我用Visual Studio重新启动Debugging时,我都会遇到这个怪异的错误: 在调用“WebSecurity”类的任何其他方法之前,必须调用“WebSecurity.InitializeDatabaseConnection”方法。 此调用应放在站点根目录中的_AppStart.cshtml文件中。 但这是每次,当我将应用程序部署到prod时。 我随后在这里得到了这个错误。 我把正确的标签: [Authorize(Roles = “admin”)] [InitializeSimpleMembership] public class IndexController : Controller 到控制器,这是filter的方式。 它只是不想工作。 using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Threading; using System.Web.Mvc; using MeetingTaskManagement.Models; using WebMatrix.WebData; namespace MeetingTaskManagement.Filters { [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute { private static SimpleMembershipInitializer _initializer; […]

处理ASP.NET Core 1.0上的大型文件上传

当我在ASP.NET Core中将大文件上传到我的web api时,运行时会在我处理和存储上传的函数被触发之前将文件加载到内存中。 对于大型上传,这会成为一个问题,因为它既慢又需要更多内存。 对于以前版本的ASP.NET ,有一些关于如何禁用缓冲请求的文章,但我无法找到有关如何使用ASP.NET Core执行此操作的任何信息。 是否可以禁用缓冲请求,以便我的服务器上的内存不会一直耗尽?

没有类型为’IEnumerable ‘的ViewData项具有键’GradingId’

我试图让一个下拉列表适用于正在评分的用户。 每个用户可以有多个评分。 因此,当我创建一个新的成绩时,我想要一个下拉列表来指定哪个用户将获得成绩。 我一直在: 没有类型为’IEnumerable’的ViewData项具有键’GradingId’。 我已经看了很多其他问题,但我无法解决我需要在控制器,视图或模型中更改的内容。 GradingController.cs public ActionResult Create() { return View(); } // POST: Gradings/Create [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = “GradingId,Eye,Cheek,Mouth,RestSymmetryTotal,RestSymmetryScore,VolForeheadWrinkle,VolGentleEyeClosure,VolOpenMouthSmile,VolSnarl,VolLipPucker,VolSymmetryTotal,VolSymmetryScore,SynForeheadWrinkle,SynGentleEyeClosure,SynOpenMouthSmile,SynSnarl,SynLipPucker,SynkinesisScore,CompositeScore”)] Grading grading) { if (ModelState.IsValid) { grading.GradeDate = DateTime.Now; db.Gradings.Add(grading); db.SaveChanges(); return RedirectToAction(“Index”); } ViewBag.GradingId = new SelectList(db.Gradings, “GradingId”, “CodeName”); return View(grading); } // GET: Gradings/Edit/5 public ActionResult Edit(int? id) { […]

将EF模型序列化为Json时的循环引用

我知道有很多关于这个主题的问题,但是没有一个问题解决了我的问题。 我正在使用MVC 5和Entity Framework 6以及Newtonsoft.Json。 我有这种例外的通常情况: Service => Staff => Service 当我尝试在我的视图中序列化service对象时,如下所示: var arr = @Html.Raw(@JsonConvert.SerializeObject(Model.Services)); 我得到“ circular reference was detected while serializing an object of type… ”exception。 我在这里找到的所有答案都说它很难解决,我应该补充一下 GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings .PreserveReferencesHandling = PreserveReferencesHandling.All; GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings .ReferenceLoopHandling = ReferenceLoopHandling.Serialize; 在我的Global.asax文件中。 好吧,我做了,它只是不起作用。 我在MSDN上阅读了一堆文章,他们都说了同样的话。 我不知道为什么,但它对我不起作用。 我能使其工作的唯一方法是在我的控制器中创建整个序列化上下文: var settings = new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All, ReferenceLoopHandling = ReferenceLoopHandling.Serialize }; […]

制作级联下拉列表(ASP.NET MVC)

我有公司和职位空缺表。 公司有多个职位空缺。 我需要制作两个下拉列表。 其中一个是公司,当我选择它时,会有与该公司有关的职位空缺。 这是公司的模型 public Company() { this.Clients = new HashSet(); this.Vacancies = new HashSet(); } [Key] public int CompanyID { get; set; } public string CompanyName { get; set; } public string Id { get; set; } public virtual AspNetUser AspNetUser { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”, “CA2227:CollectionPropertiesShouldBeReadOnly”)] public virtual ICollection Clients { get; […]

在开发多租户asp.net MVC应用程序时要记住什么?

下午好 – 我今天有一个非常普遍的问题 – 我的任务是创建一个Web应用程序来管理客户的一些基本信息。 这是一个非常简单的应用程序,但我不知道是要记住要开发网站围绕支持他们自己的域或我们url的子域的多个用户? 如何限制用户登录应用程序的其他部分? 我已经看到在Stack Overflow上的类似问题中提到了数据库范围,是否有人可以详细说明这样的实现的最佳实践? MVC3中是否有任何新function支持多租户? 我在MVC2和我的电子商务网站面临这个问题,我们决定我们希望它为多个店主提供白色标签和可自定义,并且不知道从哪里开始在现有应用程序中实现这些function。 任何输入都表示赞赏。 编辑 详细说明多租户,我的意思是 – 例如,在商店的上下文中,多个用户在www.mystore.com注册他们自己的商店,并且每个用户都有一个唯一的子域来访问他们自己的商店实例,在user1.mystore.com,user2.mystore.com等。每个商店都有订单历史记录的客户,这些客户会有登录。 我需要限制user1.mystore.com的客户在没有新帐户的情况下登录user2.mystore.com,同样阻止user2.mystore.com访问user1.mystore.com的客户历史记录。

拦截asp.net核心授权操作以在成功授权后执行自定义操作

我的网络应用控制器上有[授权]属性,因此任何端点命中都会确保用户首先被重定向到登录OAuth服务器(如果尚未登录)。 我现在想要在用户每次登录时开始将用户声明写入Web应用程序数据库。为此,我需要在每次用户成功登录/授权时在Web应用程序上运行一些代码。 我得到了一个线索,它涉及添加自定义中间件。 我的启动ConfigureServices代码目前如下: public class Startup { public Startup(IConfiguration configuration, IHostingEnvironment env) { Configuration = configuration; Env = env; } public IHostingEnvironment Env { get; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddMvc(); // Adds a default in-memory implementation of IDistributedCache. services.AddDistributedMemoryCache(); services.AddSession(options => { options.Cookie.HttpOnly = true; }); […]