Tag: asp.net mvc

DropCreateDatabaseAlways种子未调用

我在自定义数据库初始化程序中调用Seed方法时遇到问题。 我正在使用EF 5.0并具有以下代码: public static class MyDatabase { public static void Initialize() { Database.SetInitializer(new MyInitializer()); } } public class MyInitializer : DropCreateDatabaseAlways { protected override void Seed(MyContext context) { base.Seed(context); context.Roles.Add(new Role { ID = 1, Name = “User”, }); context.Roles.Add(new Role { ID = 2, Name = “Admin”, }); context.SaveChanges(); } } 这两个类存在于MVC应用程序的单独类库中。 在Global.asax […]

如何在IIS 8上运行应用程序时委派Windows身份validation会话?

我在ASP.Net MVC 5 Framework的顶部用c#编写了一个内部网应用程序。 我的应用程序配置为通过“Windows身份validation”方法对用户进行身份validation。 此应用程序在IIS 8上运行。 我的应用使用第三方SDK与我在同一域上运行的另一个程序进行交互。 此第三方应用程序允许用户也通过提供的SDK使用Windows身份validation登录。 问题 但是SDK与之通信的服务器始终返回“无效的用户名/密码无效”。 经过深入的故障排除后,我发现IIS没有返回正确的用户名。 它不是返回“Authenticated User”,而是返回正在运行pool app的用户。 因此,要解决此问题,我将应用设置更改为以下内容 我禁用了“匿名身份validation” 我启用了“Windows身份validation” 我启用了“ASP.NET模拟”,而“ASP.NET模拟”设置被设置为“经过身份validation的用户”。 注意:由于某种原因,这需要“经典”托管管道而不是“集成”。 我将AppPool管理的管道设置更改为“Classic”v4 将运行AppPool的用户更改为“网络服务”而不是“ApplicationPoolId” 然后将身份validation提供程序列表保留为“Negotiate”和“NTLM” 最后,我保持启用“Kernal模式身份validation”。 所以上面的设置返回了正确的用户名,但是它没有将密码委托给SDK。 我想因为通信滚刀,IIS正在保护登录用户,并且它不允许我将密码委托给另一个服务/ SDK。 那么我尝试将我的设置更改为以下内容 我将AppPool管理的管道设置更改为“Integrated”v4.0 将运行AppPool的用户更改为“网络服务” 我禁用了“匿名身份validation” 我启用了“Windows身份validation” 我禁用了 “ASP.NET模拟” 身份validation提供程序列表“协商:Kerberos”,“协商”和“NTLM” 我禁用了“Kernal模式身份validation”,因为它不能与“Kerberos”提供程序一起使用。 所以上面阻止我完全登录我的MVC应用程序,它只是不断地提示我一遍又一遍地提取我的凭证。 为了解决这个问题,我将我的web服务器名称放在我的域控制器中,然后我转到“委派”选项卡并将其更改为“信任此用户以便委派任何服务(仅限Kerberos)” 没有这个设置,允许我登录我的MVC应用程序。 但这一次,它既没有将用户名或密码委托给SDK。 实际上,我获得的用户名是PoolApp用户名而不是经过身份validation的用户。 为了涵盖我的所有基础,我将AppPool用户更改为对SDK所连接的服务器具有Windows身份validation访问权限的实际用户。 果然工作得很好,我能够连接到第二个服务。 但是, 始终将运行AppPool的用户名/密码委派给SDK,而不是委派连接/validation的用户名/密码。 总之,IIS不会出于某种原因将用户名/密码委托给SDK。 如何让IIS将连接的用户会话/凭证委派给其他服务? 由于用户正在使用“NTLM”身份validation而不是Kerberos,因此委派也可能失败,但服务器将仅在Kerberos身份validation时委派“如果是这种情况,我该如何强制用户使用”Kerberos “身份validation而不是”NTLM?

为什么Asp.net MVC在具有不同参数时不能区分两个动作?

我试图在我的Asp.net MVC应用程序中有两种不同的帐户注册方法,一种用于一般用户注册,另一种用于注册特定注册令牌的用户。 因此,我的AccountController有以下方法签名: public virtual ActionResult Register () {…} public virtual ActionResult Register (Guid registrationToken) {…} 但是,当我转到http://localhost/Account/Register我得到一个exception,即当前请求在这两个操作之间是不明确的。 我的印象是,如果没有传入registrationToken GET参数,它将使用无参数的Register操作,否则它将使用2nd。 这需要特殊的路由配置吗?

在ASP.NET MVC中设置包含连字符的html属性时出现问题

我已经定义了一个自定义的html属性“data-something-something”。 在我看来,我使用Html扩展方法来创建一个文本框。 其中一个参数是匿名object HtmlAttributes 。 我想传递这个值: new { data-something-something = “value” } 。 但是,由于连字符,.NET无法将data-something-something内容识别为属性名称。 我现在把它改为dataSomethingSomething ,但是我想根据HTML 5标准定义我的自定义属性(即用’data-‘作为前缀)。 在尝试在类属性上执行new { class = “class-name”}之前,我遇到了类似的问题。 对于这种情况,我发现我可以在class new { @class = “class-name”}添加一个’@’符号来使它工作(即new { @class = “class-name”} )。 因为有这种情况的解决方案,我希望可能有一个解决我当前问题的方法(前缀为’@’不起作用)。 提前致谢。

可以请求从htmlhelper访问查询字符串

您好可以在HTMLHelper扩展方法中访问查询字符串。 我们需要根据请求中的查询字符串进行不同的呈现。

在mvc5中使用MvcSiteMap创建面包屑

我想在mvc5中使用MvcSiteMap创建面包屑。 我在下面写了代码。 但我希望当我点击第一,第二,……他们的Id传递给View。 但它不起作用。 我做对了吗? //Controller Name=News Home News first //id=1 second //id=2 third // id=3 About [MvcSiteMapNode(Title = “News”, ParentKey = “News”)] public ActionResult News(int id) { ViewBag.id = id; return View(); }

C#MVC和MS Graph问题

这里陷入了两难境地。 我有一个C#MVC应用程序(连接到sharepoint),我需要找到一种从Azure Active Directory检索用户的方法(Sharepoint不为这种类型的插件提供人员选择器)。 我想要实现的目标 – >一个搜索框,在按钮上单击它会在AD中搜索用户电子邮件或名称(可能是电子邮件),然后它应该返回一个包含Azure AD用户ID和显示名称的json。 我想过使用MS Graph来做到这一点,但我没有找到一个很好的教程来实现对MVC的Graph调用。 加! id就像一种不要求用户做任何事情的方式,只需单击搜索按钮(因此最好没有用户的身份validation令牌,没有图形应用登录或此类事情)。 这可能吗 ? 我甚至会在JS中这样做,因为它将是一个相当“封闭”的应用程序,但我记录图形实现的方式让我哭…(所以……是的……请不要指向MS图形实现文档,它的awfull)。 任何帮助将不胜感激,谢谢。

可空的bool值列表始终为空

我有部分观点。 在我的部分中,一些属性是可以为空的布尔值。 如果我选中或取消选中该复选框,则在保存此记录时它始终为空。 如果我想要在取消选中时返回false,那么我该怎么办?取消选中时检查是否为true,否则为null? 这是Entity类: public string Description { get; set; } [Required] public string DocType { get; set; } [Display(Name = “User”)] [Required] public int Key { get; set; } [Display(Name = “Path”)] public string Name { get; set; } public bool? ShowFullWidth { get; set; } public List DmFormDefItems { get; set; } […]

如何在asp.net mvc3中创建自定义授权filter

我有一个问题,我在asp.net mvc3中建立一个网站, 其中我制作了我的几个控制器,所有这些都是授权的 因为我不希望未经授权的用户访问该控制器。 假设我有一个控制器和2个方法,如下所示 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace Com.health.Controllers { [Authorize] public class MyfirstController : Controller { public ActionResult Index() { return View(); } public ActionResult seeyourDetails(int id) { return View(); } } } 现在让我们假设我们的方法seeyourDetails告诉任何用户他的帐户信息,但问题是,当用户访问此方法时,URL为http://www.exampple.com/Myfirst/seeyourDetails/10 ,其中10为当前我向他展示他的详细信息的用户ID,但我应该怎么做,如果有人登录我的网站并且他访问此URL并在URL中手动添加10或任何其他号码,我的控制器将向他显示有关该用户的所有详细信息。 注意:我可以在一个地方或两个地方做这个,但我需要一些解决方案,我在一个地方实现,它在我的整个应用程序中有效。 谢谢

mvc.net多种forms的childaction

我在页面上有2个表单,它们包含在母版页中,如下所示: Html.RenderAction(“Form1”, “Controller”) 和 Html.RenderAction(“Form2”, “Controller”) 控制器具有以下内容: Function Form1() As ActionResult Return View(“Form1”, New ModelObject()) End Function Function Form1(ByVal formCollection As FormCollection) As ActionResult Return View(“Form1”, New ModelObject()) End Function Function Form2() As ActionResult Return View(“Form2”, New ModelObject()) End Function Function Form2(ByVal formCollection As FormCollection) As ActionResult Return View(“Form2”, New ModelObject()) End Function ascx中的表单标记如下,它们基本上是相同的forms,因此标记非常相似: 问题是,当我提交任何一个表单时,它会运行两个post方法。 […]