Tag: asp.net mvc

如何从HttpContext(asp.net)获取“Host:”标头

我需要从不同的域服务器部分应用程序。 确切地说,我有一个站点的子部分,应该从特定于区域的域提供。 例如: / fr / *应该来自www.domain.fr / uk / *应该来自www.domain.co.uk等服务器。 我想创建一个路由条目,将具有错误域的请求重定向到正确的域。 但我不知道如何从HttpContext访问http头信息。 欢迎任何帮助。

在.Net 4.5中检查Active Directory组成员身份

我有一个使用Windows身份validation的ASP.Net MVC应用程序,我正在检查组成员身份以确保控制器操作的安全性。 听起来很简单,我发现没有其他问题可以解决我遇到的问题。 第一次尝试:[授权] 经典的方法是简单地在控制器操作上打一个Authorize数据注释属性并转到城镇: [Authorize(Roles = @”domain\groupName1″)] 没有骰子。 我被提示输入凭据。 通常这意味着Windows身份validation配置有问题,但设置正常:(1) HttpContext.User是一个WindowsPrincipal对象,(2)我确认另一个已知的组名有效。 第二次尝试:IsInRole() 下一步是采用更老式的路线并使用IPrincipal.IsInRole() ,再次,一个返回false ,另一个返回true 。 var wp = (WindowsPrincipal)User; // false var inGroup1 = wp.IsInRole(@”domain\groupName1″); // true var inGroup2 = wp.IsInRole(@”domain\groupName2″); 难倒…所以我打了我的系统书呆子,我们仔细检查一切。 用户是群组成员? 是。 组名拼写正确吗? 是。 下一步是阻止SID。 第三次尝试:搜索身份的群集 在我的控制器中,我检查WindowsIdentity并查看组集合中的麻烦组的SID: var wi = (WindowsIdentity)wp.Identity; var group = wi.Groups.SingleOrDefault(g => g.Value == “group1-sidValue”); group变量是SecurityIdentifier对象。 因为它不是null,我们可以确定当前用户是[Authorize()]或IsInRole()尝试无法确认的组的成员。 […]

ASP.NET身份检查用户角色无效

我有一个ASP.NET MVC 5应用程序。 我正在使用标准的ASP.NET身份提供程序进行用户和角色管理。 重要的是我从自己的存储库项目中使用IdentityUser,但这似乎没问题。 我可以注册,登录,编辑用户和管理他们的角色。 我使用以下行将用户添加到Role: UserManager.AddToRole(userdetail.Id, r); db.Entry(userdetail).State = EntityState.Modified; db.SaveChanges(); 这似乎在DB级别工作。 但是,我不能使用基于角色的身份validation,实际上就是简单 HttpContext.User.IsInRole(“Administrator”) 不起作用。 [Authorize(Roles=”Administrator”)] 不起作用。 我只能用这种方法检查用户是否是管理员: UserManager.IsInRole(userID, “Administrator”). 为什么? 在我发现的每个教程中,一切正常。 可能是不同的项目存储库? 或者ASP.NET身份被打破了这么多? 请指教,

例外情况是:InvalidOperationException – 当前类型,是一个接口,无法构造。 你错过了类型映射吗?

在我的引导程序中: namespace Conduit.Mam.ClientServices.Common.Initizliaer { public static class Initializer { private static bool isInitialize; private static readonly object LockObj = new object(); private static IUnityContainer defaultContainer = new UnityContainer(); static Initializer() { Initialize(); } public static void Initialize() { if (isInitialize) return; lock (LockObj) { IUnityContainer container = defaultContainer; //registering Unity for MVC DependencyResolver.SetResolver(new UnityDependencyResolver(container)); //registering […]

MVC 6 Tag Helpers Intellisense?

是否应该在Razor / MVC 6中为新的asp- tag助手提供Intellisense? 我正在关注Shawn Wildermuth关于Pluralsight的课程之一,所有function都正常,但我认为当我开始在标签上输入asp-作为属性时,我应该得到intellisense。 如果它应该在那里你有什么可能导致它消失的想法? 我正在使用Visual Studio 2015社区,以及用于Kestrel,Mvc和TagHelpers的.Net依赖项的RC1-Final版本。

WebMatrix WebSecurity PasswordSalt

我正在使用WebMatrix,并建立了一个基于“StarterSite”的网站。 在这个初学者网站中,您将获得一个很好的基本布局 – 包括注册,登录,忘记密码页等… 我注意到在数据库中“webpages_Membership”表有一个名为“PasswordSalt”的列。 创建一些新用户帐户后,此列始终为空。 所以我假设没有使用密码盐(甚至不是默认密码)。 显然这不是最佳实践,但我似乎找不到任何文档告诉我如何设置或管理密码盐。 如何使用WebSecurity Helper设置密码salt?

通用局部视图:如何将generics类设置为模型?

我正在尝试在ASP.NET MVC应用程序中构建通用网格视图。 让我解释一些代码: public interface ITrustGrid { IPagedList Elements { get; set; } IList<IColumn> Columns { get; set; } IList Headers { get; } } 这是一个类的接口,允许我在控制器中设置列和表达式。 我将实现传递给部分视图,如下所示: <% Html.RenderPartial("SimpleTrustGridViewer", ViewData["employeeGrid"] as TrustGrid); %> 问题是我无法弄清楚如何使局部视图呈现网格通用。 换句话说,我想转此: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ITrustGrid>” %> 变成这样的东西: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ITrustGrid>” %> =>如何以最简单的方式使我的部分视图通用? 编辑: 我通过使用具有公共TrustGrid GetTrustGrid()方法的TrustGridBuilder解决了这个问题,该方法返回非genericsTrustGrid。 TrustGrid包含字符串而不是linq的东西。 所以我在GetTrustGrid()方法中执行linq并将字符串放在TrustGrid对象中。 感谢大家帮助我走上正轨。

MVC4 .NET 4.5异步操作方法不重定向

我正在尝试在我的MVC 4应用程序中实现任务操作方法。 一切都在后面工作,但它没有重定向。 public class AccountController : AsyncController { [HttpPost] [AllowAnonymous] public async Task Login(LoginModel model, string returnUrl) { var client = new ClientHelper(“login”); account = await client.CallActionType(EnumHelpers.HttpType.Post, model); if (account != null) { validLogin = true; } return Redirect(returnUrl); // This is called but the page does not redirect, just sits a load } […]

为什么我不能两次读取Http Request Input流?

我正在添加一些调试代码来测试一些东西,然后调试代码没有按预期运行。 以下示例是用于演示我的问题的简化代码。 这是在.NET 4中使用WebApi,我试图在调试代码中打印出http请求的主体。 为此,我寻找输入流并读取流。 它第一次工作正常,但如果我再试一次,我会得到一个空字符串。 为什么我不能再次寻找和读取InputStream? 在下面的示例中,body2始终为空。 在第二个集合中,CanSeek仍然为真,第二次调用ReadToEnd()会返回一个覆盖默认值的空字符串。 using System.IO; using System.Net; using System.Net.Http; using System.Web; using System.Web.Http; public class TestController : ApiController { public class TestOutuput { public string firstRead; public string secondRead; } public HttpResponseMessage Post() { string body1 = “default for one”; string body2 = “default for two”; if (HttpContext.Current.Request.InputStream.CanSeek) { […]

动作filter中的Web Api请求内容为空

我有一个名为Log的属性,它试图将请求和响应的内容记录到文本文件中。 我把它放在我的控制器上以涵盖所有动作。 在LogAttribute中,我正在读取内容为字符串(ReadAsStringAsync),所以我不会丢失请求体。 public class LogAttribute : ActionFilterAttribute { // .. public override void OnActionExecuting(HttpActionContext actionContext) { // stuff goes here var content = actionContext.Request.Content.ReadAsStringAsync().Result; // content is always empty because request body is cleared } public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { // other stuff goes here var content = actionContext.Request.Content.ReadAsStringAsync().Result; // content is always […]