Tag: asp.net

C#7本地函数不能按预期方式工作,也不会显示错误

我有一个Asp.Net MVC应用程序与框架版本.NET 4.5运行,我正在使用VS2017专业版。 用户可以上传附件,包括但不限于: 高强 字 幻灯片 PDF格式 JPEG PNG 所以我有一个privatefunction,如下所示: private string ImageExtension(string path) { string noImagePath = HttpContext.Current.Server.MapPath("~/Contenthttp://img.dovov.comTemplate/No-Image-Available-100×100.jpg"); string fileExtension = System.IO.Path.GetExtension(path); switch (fileExtension) { case ".jpg": case ".jpeg": case ".gif": case ".png": return path; default: return noImagePath; } } 正如你所看到的那样,这很简单,不会做任何事情。 由于我只是在一个地方使用这个地方,我想到了使用本地函数的新C#7function。 所以我已经提前创build了我的主函数,并在其中添加了ImageExtension(string path) 。 public void BugInfo(HttpPostedFileBase file) { if(file != null […]

Application_End global.asax

任何人都可以告诉我Application_End何时在应用程序的生命周期中被触发? 当所有会话结束时,Application_End会自动触发吗? + Application_End是否有其他原因可以触发?

将同步代码包装到asynchronous调用中

我在ASP.NET应用程序中有一个方法,需要花费很多时间才能完成。 根据用户提供的caching状态和参数,在一次用户请求期间,对此方法的调用最多可能发生3次。 每个通话需要大约1-2秒钟才能完成。 该方法本身是对服务的同步调用,并且不可能覆盖实现。 所以对服务的同步调用看起来如下所示: public OutputModel Calculate(InputModel input) { // do some stuff return Service.LongRunningCall(input); } 方法的用法是(注意方法的调用可能会发生一次以上): private void MakeRequest() { // a lot of other stuff: preparing requests, sending/processing other requests, etc. var myOutput = Calculate(myInput); // stuff again } 我试图从我身边改变执行,以提供这种方法的同时工作,这是我到目前为止。 public async Task<OutputModel> CalculateAsync(InputModel input) { return await Task.Run(() => { return […]

.NET 4.5 WebSockets vs SignalR

我已经看到了asp.net MVC聊天应用程序的signalR vs html5 websockets,但它并没有100%的回答我的问题,因为它基于HTML5 WebSockets,微软可能已经用.NETSocket对象在.NET 4.5中扩展了它。 我想知道WebSocketfunction是否确实和SignalR一样,并且在WebSocket不可用时回退到长轮询? 毫无疑问,微软会采用与SignalR相同的技术来实现这一技术? 编辑: 对于其他人想知道这个,我发现这个评论最有助于理解的情况,为什么我会使用SignalR: 那么,他们不是真的。 直到现在,IIS和ASP.NET没有在支持的WebSocket中构build任何内容,所以SignalR项目必须自己构build它。 现在,微软正在提供的pipe道SignalR可以轻松切换到使用微软的实施,除了或自己的,而不是。 SignalR是对实现细节的抽象,WebScockets类是实现细节

如何在.NET MVC 2中实现正确的HTTPerror handling?

我一直在努力整天在我的ASP.NET MVC 2应用程序中实现error handling。 我已经看过各种技术,但都没有正常工作。 我正在使用MVC2和.NET 4.0(在MVC3发布之前启动了项目;我们将在我们发布初始版本后进行升级)。 在这一点上,我会很乐意妥善处理404和500错误 – 403(需要授权)也会很好,其次是各种其他具体的回应。 现在,我可以在404之前全部拿到404,全部500,全部302,在500之前全部拿到302。 这是我的要求(它应该非常接近HTTP的基本要求): 如果找不到资源,则抛出一个404,并显示一个404请求的URL的特定页面。 不要像302那样返回一个中间响应代码。理想情况下,保持请求的URL,而不是像/Error/NotFound那样显示一个新的URL,但是如果后者显示,确保我们没有返回redirect响应来获取它。 如果发生内部服务器错误,请抛出500,并显示一个500特定的错误,并指出错误的位置。 同样,不要返回中间响应代码,理想情况下不要更改URL。 以下是我想要的404: 找不到静态文件: /Content/non-existent-dir/non-existent-file.txt 未find控制器: /non-existent-controller/Foo/666 find控制器,但未find操作: /Home/non-existent-action/666 find控制器和操作,但操作无法find请求的对象: /Home/Login/non-existent-id 以下是我认为的500: 发布一个错误的值: POST /User/New/new-user-name-too-long-for-db-column-constraint 与数据无关的问题,如Web Service端点未响应 其中一些问题需要通过特定的控制器或模型来识别,然后控制器应该抛出相应的HttpException。 其余的应该更通用地处理。 对于404情况#2,我试图使用自定义的ControllerFactory来抛出404如果控制器无法find。 对于404情况#3,我试图使用一个自定义的基本控制器来覆盖HandleUnknownAction并抛出404。 在这两种情况下,我在404之前得到了一个302.而且,我从来没有得到500个错误; 如果我修改Web.config来在我的Web服务端点input一个拼写错误,我仍然得到一个302,然后一个404说不能find使用 Web服务的URL(控制器/操作)。 我也得到请求的URL作为(不需要的)查询string参数: /Error/NotFound?aspxerrorpath=/Home/non-existent-action 这两种技术来自http://www.niksmit.com/wp/?p=17 (如何使用ASP.Net MVC获得正常的404(页面未find)错误页面),从http:// richarddingwall指出。名称/ 2008/08/17 /为基础的战略,为资源-404-错误-在-ASPNET-MVC / 如果在Web.config中有<customErrors mode="On" defaultRedirect="~/Error/Unknown" redirectMode="ResponseRedirect" /> ,我会得到相应的响应代码,但是我的Error控制器永远不会被调用。 取出redirectMode属性让我的MVC错误的意见,但与一个介入302和一个更改的URL – […]

System.Web.Http.Authorize与System.Web.Mvc.Authorize

哪个授权属性? System.Web.Http.Authorize System.Web.Mvc.Authorize using System.Web.Mvc // or using System.Web.Http 典型的控制器 [Authorize] public class SomeController : Controller 我们有控制器用[Authorize]注解我只注意到,由于使用了命名空间 ,注释技术上指的是不同的属性类。 该项目包含MVC控制器和WEBAPI控制器。 我应该使用哪一个,为什么? 如果我不解决这个问题,我们可能会遇到什么问题?

后redirect – 获取ASP.NET

我怎样才能实现ASP.NET的后redirect获取模式? button点击执行一些处理: <asp:Button id="bbLaunch" OnCommand="bbLaunch_Click" /> 用户点击button,航天器启动,网页重新显示。 如果用户按下F5,则会发出警告: 问题的解决scheme是Post-Redirect-Get模式。 什么是PRG可以在ASP.NET中实现的方法? 问题围绕以下问题展开: <asp:Button>执行一个POST到一个不是它的原始forms的地方? 当您发布到不读取视图状态的表单时, ViewState会怎样? 当您redirect到“真正的”aspx网页表单时, ViewState会变成什么样子? ViewState从根本上与ASP.net不兼容Post-Redirect-Get? 是ASP.net从根本上不兼容后redirect – 获取 ? 如何 (即什么代码)你redirect到“真正的”aspx网页forms? 如何 (即什么url)你redirect到“真正的”aspx网页forms? 关系问题提到Response.Redirect(Request.RawUrl); 什么时候 (即在什么事件处理程序),你redirect到“真正的”aspx网页forms? 相关的问题引发了您如何发布表单数据的问题。 这意味着HTML 表单不能被使用 – 所有的表单数据都必须被添加到查询string中。 这是真的? 如果是这样,为什么? 如果没有,为什么不呢? 浏览器可以将查询string中的表单数据? 一个相关的问题提到Server.Transfer 。 使用Server.Transfer是完全错误的,绝不会解决Post-Redirect-Get问题(因为没有redirect )。 正确? aspx或aspx.cs文件中必须发生哪些代码更改才能支持PRG? 据推测,至less必须将代码更改为除MyPage.aspx之外的MyPage.aspx 。 换句话说: 你如何做后redirect – 获取在ASP.net? 注意 :ASP.net(即不是ASP.net MVC) 也可以看看 如何在asp.net WebForms中实现Post […]

如何使用ConfigurationManager.AppSettings

我从来没有使用过“appSettings”之前。 如何在C#中configuration这个与SqlConnection一起使用,这是我使用的“ConnectionStrings” SqlConnection con = new SqlConnection(); con.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 这就是我对“appSettings” SqlConnection con = new SqlConnection(); con = ConfigurationManager.AppSettings("ConnectionString"); 但它不工作。

为什么嵌套锁不会导致死锁?

可能重复: C#中的重入锁 为什么这个代码不会导致死锁? private static readonly object a = new object(); … lock(a) { lock(a) { …. } }

如何强制netwtonsoft json序列化程序将datetime属性序列化为string?

我正在使用Newtonsoft的Json时,我序列date时间属性我得到的JSON响应为: …"CreatedOn":"\/Date(1317303882420+0500)\/",… 我希望它在简单的string作为 …"createdOn": "2011-05-05 14:03:07", … 而我的类属性是DateTime,我如何强制将其作为string进行序列化,因为我们可以添加属性来将属性名称更改为 [JsonProperty("id")] public int ProductID { get; set; } 有没有类似的方式强制DateTime属性序列化为string?