Tag: asp.net mvc

如何使用DI在Class Constructor中获取Microsoft.AspNet.Http.HttpContext实例

我正在MVC 6中构建一个一次性应用程序,并尝试使用不同的依赖架构。 我面临的问题是如何创建特定于应用程序的自定义“ MyAppContext ”对象。 这将需要来自HttpContext一些信息和来自数据库的一些信息,并且将是针对应用程序特定属性的请求范围的存储库。 我想将HttpContext的实例传递给’ MyAppContext ‘的构造函数。 我已经使用DI成功创建了一个带有IDataService接口的’ DataService ‘对象,这IDataService用。 与’MyAppContext’类的不同之处在于它在构造函数中有两个参数–‘ DataService ‘和Microsoft.AspNet.Http.HttpContext 。 这是MyAppContext类: public class MyAppContext : IMyAppContext { public MyAppContext(IDataService dataService, HttpContext httpContext) { //do stuff here with the httpContext } } 在启动代码中,我注册了DataService实例和MyAppContext实例: public void ConfigureServices(IServiceCollection services) { services.AddMvc(); //adds a singleton instance of the DataService using DI services.AddSingleton(); services.AddScoped(); […]

如何在asp.net MVC 4中手动删除cookie

我需要手动删除身份validationcookie(而不是使用FormsAuthentication.SignOut whcih由于某些原因不起作用)。 我试过了 System.Web.HttpContext.Request.Cookies.Remove(cookieName); // for example .ASPXAUTH System.Web.HttpContext.Response.Cookies.Remove(cookieName); // for example .ASPXAUTH FormsAuthentication.SignOut(); // I don’t know why this one does not work 这些命令都不起作用。 事实上,响应cookie是空的,请求cookie包含我想删除的cookie,当执行以下命令时它不再包含我删除的cookie但在浏览器中cookie仍然存在,我能够做到授权用户甚至可以做的事情之后退出。

是否有可能在ASP.NET MVC路径到达控制器之前更改它的querystring变量?

我在ASP.NET MVC中有一个控制器方法,如下所示: public ActionResult GetAlbumPictures(int albumId) { var album = AlbumRepo.GetSingle(albumId); var pictures = album.Pictures; return View(pictures); } 此方法的路由如下所示: routes.MapRoute(null, “pictures” new { controller = “Album”, action = “GetAlbumPictures” }); 用户将使用以下URL获取图片,按照相册ID进行过滤: GET http://server/pictures?albumid=10 但是,我想将querystring参数更改为album而不是albumid : GET http://server/pictures?album=10 这意味着需要将控制器方法修改为: public ActionResult GetPictures(int album) { … } 但是,这并不理想,因为现在该方法有一个名为album的参数,可以将其混淆为Album 对象而不是Album的ID 。 我的问题是,有没有办法配置ASP.NET MVC,以便在路由中,它将收到一个名为album的查询字符串参数,但然后将其作为albumId参数传递给控制器​​? PS我知道我可以在路由表中执行此操作: routes.MapRoute(null, “album/{albumId}/pictures”, new { […]

无法创建组件,因为它具有要满足的依赖性

我正在学习DDD,n-Tier,Repositoriess等。 有人把我指向ASP.NET Boilerplate,我决定用它开始一个测试项目。 我从来没有处理dependency injection,所以这对我来说都是新的,但它依赖于它使用ius Castle Windsor的DI依赖。 现在,我创建了一个模型,并从这个模型中创建了一个接口。 我还添加了一个服务。 每当我启动应用程序时,它都会给我这个错误: Can’t create component ‘TestApp.Services.MemberInfo.MemberAppService’ as it has dependencies to be satisfied. ‘TestApp.Services.MemberInfo.MemberAppService’ is waiting for the following dependencies: – Service ‘TestApp.Repositories.IMemberInfoRepository’ which was not registered. 我知道你必须注册服务等,但是阅读它在这里说的ABPs文档, http://www.aspnetboilerplate.com/Pages/Documents/Dependency-Injection#DocAbpInfrastructure ,如果你添加App,它们会自动注册到class级的名字。 基本上,这是我的代码: IMemberInfoRepository public interface IMemberInfoRepository : IRepository { } MemberAppService public class MemberAppService : IMemberAppService { private […]

ASP.NET自动注销

我和另外4个人一起做团队项目。 我们正在使用嵌入式c#在MVC4中设计ASP.NET中的作业信息亭。 我正在努力让系统在闲置10分钟后将用户注销。 我需要一些帮助来解决如何开始编写系统记录用户的方法。

升级到SignalR-2.0.0-beta2时未生成/ signalr / hubs

我有一个像SignalR 1.1.2上运行的应用程序的工作聊天,它将被放到负载平衡的服务器上,所以我需要实现一个背板解决方案来同步服务器。 这是一个ASP.NET MVC4 .NET 4.5应用程序。 使用SignalR Hub ,而不是持久连接。 该应用程序利用客户端的AngularJS来处理ui绑定和更新。 我按照此处列出的步骤实现了sql server背板,并使用了此处概述的1.x到2.0迁移中概述的步骤。 解决方案构建,但是当点击使用SignalR的页面时,“/ signalr / hubs”脚本引用返回500错误。 这是我到目前为止所采取的步骤列表。 使用nuget,删除了与SignalR 1.1.2相关的所有引用和依赖项。 双重检查/ bin和/ packages目录以确保它们不再引用任何旧库。 这是关于2.0升级的github 问题上发现的评论,表示卸载和重新安装SignalR是升级的方法。 通过软件包管理器控制台(PMC) Install-Package Microsoft.AspNet.SignalR -Pre SignalR 2.0.0-beta2 Install-Package Microsoft.AspNet.SignalR -Pre 使用PMC Install-Package Microsoft.AspNet.SignalR.SqlServer -Pre安装的SQL Server消息传递背板 删除了RouteTable.Routes.MapHubs(); 来自Global.asax 在项目的根目录中创建了Startup类。 Startup.cs using Microsoft.AspNet.SignalR; using Microsoft.Owin; using Owin; namespace My.NameSpace { public class Startup { […]

如何在c#mvc中跨多个子域保持会话?

一个购物车应用程序我正在从正常页面进入提交您的详细信息页面时跳转域。 简而言之,部署了两个应用程序副本:一个服务器用于“主”站点,一个服务器具有运行在https上的ev证书,用于客户详细信息(包括付款;这是PCI合规性问题)。 我的问题是: 从http://shop.domain – > https://secure.domain跳转 (如果用户浏览后退回),我该如何保留会话? 使用JSONP传递cookie跨越域是微不足道的,但我不知道如何处理远程端的“重新连接”会话。 我已经阅读了有关滚动您自己的自定义会话提供程序等的各种事情,但我还没有找到一个不仅仅是通用建议; 当然没有关于如何使用它来重新加入会话的示例。 这是一个MVC3 c#网络应用程序。

使用表单身份validation获取当前用户ID(而不是名称)?

题: 我正在玩表单身份validation和我自己的自定义成员资格提供程序。 从我看到的,我可以通过以下方式获得当前的FormsIdentity: System.Web.Security.FormsIdentity veryFunny= (System.Web.Security.FormsIdentity) System.Web.HttpContext.Current.User.Identity; 我可以让当前的会员用户这样做: var UserFromDb = System.Web.Security.Membership.GetUser(); 然后我可以通过这样做获得用户ID: var MyUserId = UserFromDb.ProviderUserKey; 我觉得有趣的是,当我调用Membership.GetUser()时,它会在成员资格提供程序中调用此方法 public override MembershipUser GetUser(string username, bool userIsOnline) 其中查找数据库中的用户信息。 所以我认为.NET框架内部就是这样 GetUser(System.Web.HttpContext.Current.User.Identity.Name, whatever); 它根据USERNAME从数据库中获取用户信息。 我发现这令人不安,首先是因为当我必须查找整个用户只是为了获得用户ID时,它对性能有害。 其次,令人不安的是我必须查找用户ID,因为这不是我所期望的。 第三,它令人不安,因为用户名可以在程序过程中更改,并且让用户必须注销并登录才能这样做是无稽之谈。 现在,对我来说,这个设计听起来像废话。 但话说回来,微软还使用应用程序名称,组名和用户名作为主键,这也没有多大意义。 所以我的问题在这里: 没有数据库查找的方法来获取用户ID? 或者整个会员提供者的想法是如此被设计破坏? 如果它坏了: 我看到FormsIdentity有一个名为userdata的字符串属性。 如果是这样,我如何使用ASP.NET来保存用户ID?

ASP.NET MVC:如何创建一个动作filter来输出JSON?

我在ASP.NET MVC的第二天,也是我第一次在SO上请求代码(是的,快捷方式)。 我正在寻找一种方法来创建一个filter,拦截一个Action的当前输出,而不是输出JSON(我知道其他方法,但这是为了帮助我理解filter)。 我想忽略与该操作相关的任何视图,只需抓取ViewData [“Output”],将其转换为JSON并将其发送出客户端。 空白填补: TestController.cs: [JSON] public ActionResult Index() { ViewData[“Output”] = “This is my output”; return View(); } JSONFilter.cs: public override void OnActionExecuting(ActionExecutingContext filterContext) { /* * 1. How to override the View template and set it to null? * ViewResult { ViewName = “” } does not skip the view (/Test/Index) […]

如何在mvc4 razor中显示validation消息

我是MVC Razor的新手,我想在文本框上实现validation消息。 这里我动态创建一些文本框,如下所示: 查看代码: foreach (var items in (IEnumerable)Model.UsersOfList) { @Html.TextBoxFor(m => m.LoginNameOfLoginInfoTab, new { @class = “textBox_LoginInfoAndPermission”, @value = (Model.LoginNameOfLoginInfoTab = items[“UserName”].ToString()), @id = (“txtUserLoginName” + Model.UsernameOfLoginInfoTab.Trim()) }) @Html.ValidationMessageFor(m => m.LoginNameOfLoginInfoTab, null, new { @class = “ErrorMessage” }) @Html.TextBoxFor(m => m.UsernameOfLoginInfoTab, new { @class = “textBox_LoginInfoAndPermission”, @value = (Model.UsernameOfLoginInfoTab = items[“FirstName”].ToString()), @id = (“txtUserName” […]