Tag: asp.net

完全取代ASP.Net的会话

ASP.Net会话对于传统的WebForms应用来说显得非常完美,但是它们对于现代的AJAX和MVC应用程序来说是一些严重的问题。 具体来说,只有3种方法可以访问ASP.Net提供程序: 锁定读写 (默认) – 会话从AcquireRequestState触发被锁定,直到ReleaseRequestState触发。 如果一次从浏览器发出3个请求,他们将在服务器上排队。 这是MVC 2中唯一的选择,但MVC 3允许… 非锁定只读 – 会话未锁定,但不能保存到。 这似乎是不可靠的 ,因为一些读取似乎再次锁定会话。 会话已禁用 – 任何尝试读取或写入会话都会引发异常。 但是,现代的MVC应用程序,我有很多AJAX事件同时发生 – 我不希望他们在服务器上的队列,但我希望他们能够写入会话。 我想要的是第四种模式: 脏读,最后写赢 我认为(乐于纠正)唯一的方法就是完全取代ASP.Net的会话。 我可以编写自己的提供程序 ,但ASP仍然会使用它支持的三种模式之一来调用它。 有什么办法让ASP.Net支持乐观并发? 这让我用一个基本上做同样事情的新类替换了所有对会话的调用,但是不锁 – 这是一个痛苦。 我希望尽可能多地保留当前会话的内容(在各种日志中最重要的会话ID),并尽可能少地替换代码。 有没有办法做到这一点? 理想情况下,我希望HttpContext.Current.Session指向我的新类,但没有ASP.Net锁定任何请求。 有没有人已经做过这样的事情? 看起来奇怪的是,在所有的AJAXey MVC应用程序中,这是ASP的一个新问题。

ASP.NET中的会话超时

我在IIS 6.0中运行ASP.NET 2.0应用程序。 我希望会话超时为60分钟,而不是默认的20分钟。 我做了以下 在web.config中设置 在IIS管理器/网站属性/ ASP.NET配置设置中将会话超时设置为60分钟 将应用程序池属性/性能中的空闲超时设置为60分钟。 20分钟后,我仍然得到一个会话超时。 还有什么我需要做的?

你如何在ASP.NET Core中创建一个自定义的AuthorizeAttribute?

我正在尝试在ASP.NET Core中创建一个自定义授权属性。 在以前的版本中,可以重写bool AuthorizeCore(HttpContextBase httpContext) 。 但是这在AuthorizeAttribute不再存在。 什么是目前做一个自定义的AuthorizeAttribute的方法? 我正在尝试完成:我正在接收标题授权中的会话ID。 从这个ID我会知道一个特定的行动是否有效。

我刚刚发现为什么所有的ASP.Net网站都很慢,我正在设法解决这个问题

我刚刚发现,ASP.Net Web应用程序中的每个请求都在请求开始时获得一个Session锁,然后在请求结束时释放它! 如果这件事的影响在你身上丢失了,就像我刚开始时那样,这基本上意味着如下: 任何时候,ASP.Net网页都需要很长时间才能加载(可能是因为数据库调用缓慢或者其他原因),并且用户因为厌倦了等待而决定导航到不同的页面,所以他们不能! ASP.Net会话锁迫使新的页面请求等待,直到原始请求完成其痛苦的缓慢加载。 Arrrgh。 每当UpdatePanel缓慢加载,并且用户决定在UpdatePanel完成更新之前导航到不同的页面…他们不能! ASP.net会话锁迫使新的页面请求等待,直到原始请求完成其痛苦的缓慢加载。 双Arrrgh! 那么有什么选择? 到目前为止,我已经想出了: 实现ASP.Net支持的自定义SessionStateDataStore。 我还没有发现太多复制,似乎是一种高风险,容易搞砸。 跟踪所有正在进行的请求,并且如果请求来自同一用户,请取消原始请求。 似乎有点极端,但它会工作(我认为)。 不要使用会话! 当我需要用户的某种状态时,我可以使用缓存来代替,也可以使用经过身份验证的用户名或关键项。 再次显得有点极端。 我真的不敢相信ASP.Net微软团队会在4.0版本的框架中留下如此巨大的性能瓶颈! 我错过了什么明显的? 在会话中使用ThreadSafe集合有多难?

解决方法“ObjectContext实例已经被处置,不能再用于需要连接的操作”InvalidOperationException

我正在尝试使用Entity Frameworkm填充一个GridView但每当我得到以下错误: 对象'COSIS_DAL.MemberLoan'上的属性访问器'LoanProduct'抛出以下异常:ObjectContext实例已被处置,不能再用于需要连接的操作。 我的代码是: public List<MemberLoan> GetAllMembersForLoan(string keyword) { using (CosisEntities db = new CosisEntities()) { IQueryable<MemberLoan> query = db.MemberLoans.OrderByDescending(m => m.LoanDate); if (!string.IsNullOrEmpty(keyword)) { keyword = keyword.ToLower(); query = query.Where(m => m.LoanProviderCode.Contains(keyword) || m.MemNo.Contains(keyword) || (!string.IsNullOrEmpty(m.LoanProduct.LoanProductName) && m.LoanProduct.LoanProductName.ToLower().Contains(keyword)) || m.Membership.MemName.Contains(keyword) || m.GeneralMasterInformation.Description.Contains(keyword) ); } return query.ToList(); } } protected void btnSearch_Click(object sender, ImageClickEventArgs e) […]

根据内容 – JQUERY / Javascript使iframe高度动态化

我在iframe中加载了一个aspx网页。 Iframe中的内容可以比iframe的高度更高。 iframe不应该有滚动条。 我有一个包装的div标签内的iframe基本上是所有的内容。 我写了一些jQuery来调整大小: $("#TB_window", window.parent.document).height($("body").height() + 50); 其中TB_window是包含Iframe的div。 body – iframe中aspx的body标签。 该脚本附加到iframe内容。 我从父页面获取TB_window元素。 虽然这在Chrome上运行良好,但TB_window在Firefox中崩溃。 为什么会发生这种情况,我感到非常困惑/迷失。

超时过期。 操作完成之前超时的时间或服务器没有响应。 声明已经终止

我的网站上有很多用户(每天20000-60000),这是一个移动文件的下载网站。 我有远程访问我的服务器(Windows Server 2008 R2)。 我以前收到“服务器不可用”错误,但现在看到连接超时错误。 我不熟悉这个 – 为什么会发生,我该如何解决? 完整的错误如下: “/”应用程序中的服务器错误。 超时过期。 操作完成之前超时的时间或服务器没有响应。 声明已经终止。 说明:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的来源。 异常详细信息:System.Data.SqlClient.SqlException:超时过期。 操作完成之前超时的时间或服务器没有响应。 声明已经终止。 源错误: 执行当前Web请求期间生成未处理的异常。 有关异常的来源和位置的信息可以使用下面的异常堆栈跟踪来标识。 堆栈跟踪: [SqlException(0x80131904):超时过期。 操作完成之前超时的时间或服务器没有响应。 声明已经终止。] System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection)+404 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()+412 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)+1363 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)+6387741 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔returnStream,布尔异步)+6389442 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔returnStream,String方法,DbAsyncResult结果)+538 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result,String methodName,Boolean sendToPipe)+689 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()+327 NovinMedia.Data.DbObject.RunProcedure(String storedProcName,IDataParameter []参数,Int32&rowsAffected)+209 DataLayer.OnlineUsers.Update_SessionEnd_And_Online(对象Session_End,布尔在线)+440 NiceFileExplorer.Global.Application_Start(对象发件人,EventArgs e)+163 […]

Ajax请求返回200 OK,但会触发错误事件而不是成功

我在我的网站上实现了一个Ajax请求,我正在从一个网页调用端点。 它总是返回200 OK ,但jQuery执行错误事件。 我尝试了很多东西,但我无法弄清楚这个问题。 我在下面添加我的代码: jQuery代码 var row = "1"; var json = "{'TwitterId':'" + row + "'}"; $.ajax({ type: 'POST', url: 'Jqueryoperation.aspx?Operation=DeleteRow', contentType: 'application/json; charset=utf-8', data: json, dataType: 'json', cache: false, success: AjaxSucceeded, error: AjaxFailed }); function AjaxSucceeded(result) { alert("hello"); alert(result.d); } function AjaxFailed(result) { alert("hello1"); alert(result.status + ' ' + result.statusText); } […]

IIS Express启用外部请求

如何在IIS Express中启用远程请求? 斯科特格思里写道,这是可能的,但他没有说如何。

使用Razor View Engine从ASP.NET MVC 3的局部视图中将内容注入特定的部分

我在_Layout.cshtml定义了这个部分 @RenderSection("Scripts", false) 我可以从视图中轻松地使用它: @section Scripts { @*Stuff comes here*@ } 我正在努力的是如何从局部视图中获得一些内容注入本节内容。 我们假设这是我的查看页面: @section Scripts { <script> //code comes here </script> } <div> poo bar poo </div> <div> @Html.Partial("_myPartial") </div> 我需要从_myPartial局部视图的Scripts部分注入一些内容。 我该怎么做?