Tag: ashx

System.NullReferenceException检查是否!= null

我正在使用ASHX处理程序,我希望处理程序检查Session!= null。 if (context.Session[“Username”] != null) 我得到这个错误指向这一行: System.NullReferenceException:未将对象引用设置为对象的实例。 有什么问题?

动态地将位图返回到浏览器

我正在裁剪图像,并希望使用ashx处理程序返回它。 裁剪代码如下: public static System.Drawing.Image Crop(string img, int width, int height, int x, int y) { try { System.Drawing.Image image = System.Drawing.Image.FromFile(img); Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb); bmp.SetResolution(image.HorizontalResolution, image.VerticalResolution); Graphics gfx = Graphics.FromImage(bmp); gfx.SmoothingMode = SmoothingMode.AntiAlias; gfx.InterpolationMode = InterpolationMode.HighQualityBicubic; gfx.PixelOffsetMode = PixelOffsetMode.HighQuality; gfx.DrawImage(image, new Rectangle(0, 0, width, height), x, y, width, height, GraphicsUnit.Pixel); […]

如何在asp:Image对象中使用.ashx处理程序?

我有一个ashx处理程序: using System; using System.Web; public class Thumbnail : IHttpHandler { public void ProcessRequest(HttpContext context) { string imagePath = context.Request.QueryString[“image”]; // split the string on periods and read the last element, this is to ensure we have // the right ContentType if the file is named something like “image1.jpg.png” string[] imageArray = imagePath.Split(‘.’); if (imageArray.Length […]

多个图像处理程序调用导致IE在弹出窗口中挂起

我们有一个ashx图像处理程序,在过去的几年中表现相当不错,但我们最近注意到IE8和IE9中有一些奇怪的间歇性行为。 我们有一个图库页面,它作为图像的src属性的一部分多次调用图像处理程序,该页面在弹出窗口中打开。 页面工作正常,但是当窗口快速连续打开和关闭时(在页面上的所有图像都已完成加载之前),它会导致浏览器挂起,然后必须重新启动。 以下是我们的图像处理程序代码的示例,我怀疑当窗口关闭并且浏览器和服务器之间的连接仍在运行并导致它崩溃时,对图像的请求不是“结束”。 查看日志有多次尝试通过处理程序获取相同的图像,因此看起来浏览器正在重试,因为它认为它未能完成请求。 我是否可以对处理程序(或客户端代码)进行任何更改,以确保浏览器在窗口关闭后不会继续请求图像,或者这是IE的烘焙复杂性? Safari,Firefox和Chrome可以很好地处理这种行为。 Alos注意:显示图像的页面在网格周围有一个更新面板 – 但我不认为这是相关的。 Response.Clear(); Response.ContentType = “image/jpeg”; System.Drawing.Image returnImage = System.Drawing.Image.FromFile(completeImageFilePath); using (MemoryStream stream = new MemoryStream()) { returnImage.Save(stream, ImageFormat.Jpeg); stream.WriteTo(Response.OutputStream); } returnImage.Dispose(); if (Response.IsClientConnected) { Response.Flush(); } Response.End();

如何正确使用javascript反序列化将json字符串转换为复杂对象?

我有我的.ashx处理程序中可用的以下json对象(var items =): {“Coverages”:{“PersonID”:10,”DetCode”:””,”Reimbursement”:””,”Deductible”:””,”MaximumPerAnnum”:””,”MaximumPerVisit”:””,”MaximumPerVisits”:””,”SvcCode”:””},”CoverageCombinedMaximums”:{“PersonID”:10,”DetCode”:[“AAAAA”,”BBBBB”,”CCCCC”],”MaximumPerAnnum”:””}} public void ProcessRequest (HttpContext context) { bool isSuccessful = true; var items = context.Request.Params[“items”]; if (isSuccessful) { JavaScriptSerializer ser = new JavaScriptSerializer(); AdditionalCoveragesPackage package = ser.Deserialize(items); } else { SendErrorMessage(context); return; } } 这是我试图反序列化的类的结构: public class AdditionalCoverage { public int PersonID { get; set; } public string DetCode { get; set; […]

如何调用ASHX处理程序并返回结果

我创建了一个Handler,在执行一些数据库工作后返回整数值。 我想知道如何通过调用该处理程序获取该值并将该值赋给Label。 我用google搜索它,大多数示例使用Jquery.AJAX调用来检索值。 我相信我也可以通过使用它获得价值。 但由于我公司的某些限制,我被限制使用代码。 任何例子都会有帮助。 Handler: http://somesite.com/Stores/GetOrderCount.ashx?sCode=VIC which returns: 3 需要将其分配给标签控件 到目前为止,我已经尝试了这么多。 HttpWebRequest request = (HttpWebRequest) WebRequest.Create(“http://somesite.com/Stores/GetOrderCount.ashx?sCode=VIC”); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Label1.Text = response.ToString() // this does not work

通用处理程序参数大小限制?

我有一些JavaScript代码生成一个非常长的脚本,然后将其发送回服务器,以创建一个csv的通用处理程序。 我发送数据的JavaScript代码是: function postwith(to, p) { var myForm = document.createElement(“form”); myForm.method = “post”; myForm.action = to; for (var k in p) { var myInput = document.createElement(“input”); myInput.setAttribute(“name”, k); myInput.setAttribute(“value”, p[k]); console.log(k+”:”+p[k]); myForm.appendChild(myInput); } document.body.appendChild(myForm); myForm.submit(); document.body.removeChild(myForm); } 在我的控制台中,我可以看到整个字符串被添加到表单中(“console.log(k +’:’+ p [k]);”所以客户端似乎工作正常。 在我检查请求/响应的网络视图中,我可以看到“内容”(表单数据属性的名称)不完整 – 它在中间被剪切。 服务器端非常简单 – 将内容作为csv发回: public class Excel : IHttpHandler { public void […]

下载大文件,保存在数据库中

我们有很多文件,在SQL Server数据库中保存为二进制文件。 我已经将用于传递这些文件的.ashx文件发送给用户。 不幸的是,当文件变得相当大时,它将失败,并出现以下错误: 算术运算中溢出或下溢 我假设它耗尽了内存,因为我将二进制文件加载到byte []中。 所以,我的问题是,当它来自数据库表时,我怎样才能创建这个function,读取块(也许?)? 似乎Response.TransmitFile()似乎是一个不错的选择,但同样,如何使用数据库? DB.GetReposFile()在下面的代码中从数据库中获取文件。 条目有各种字段:Filename,ContentType,datestamps和FileContent as varbinary。 这是我的function,提供文件: context.Response.Clear(); try { if (!String.IsNullOrEmpty(context.Request.QueryString[“id”])) { int id = Int32.Parse(context.Request.QueryString[“id”]); DataTable dtbl = DB.GetReposFile(id); string FileName = dtbl.Rows[0][“FileName”].ToString(); string Extension = FileName.Substring(FileName.LastIndexOf(‘.’)).ToLower(); context.Response.ContentType = ReturnExtension(Extension); context.Response.AddHeader(“Content-Disposition”, “attachment; filename=” + FileName); byte[] buffer = (byte[])dtbl.Rows[0][“FileContent”]; context.Response.OutputStream.Write(buffer, 0, buffer.Length); } else { context.Response.ContentType […]

使用ASP.NET .ashx模块下载文件

我有一个带有iframe的ASP.NET页面,用于在此页面上显示一些pdf报告。 当用户从下拉列表中选择报告类型时,我将报告数据所需的内容添加到ASP.NET会话中,并将iframe的属性“src”更改为生成.pdf报告的.ashx模块地址。 但是如果没有安装用于查看浏览器中的.pdf文件的Adobe glug-in,则浏览器建议保存报告文件,并且建议文件的名称为“HandlerName.ashx”。 但我想建议浏览器保存名为“Report.pdf”的文件。 我可以这样做吗? 有没有解决方法?

从Generic Handler(ashx)文件中捕获ASP.NET中的exception

我试图让我的ASP.NET站点使用不同的服务器端堆栈。 我的ashx文件似乎抛出了500内部服务器错误。 我如何弄清楚这个ashx文件抛出的exception或抛出500的原因? 当我附加到我的IIS 7 w3wp.exe进程时,它不会抛出exception,但我读到这可能是这种情况。 ashx文件位于我的ASP.NET站点的根目录中,并且属性将其设置为编译。 GET http://uhc-8:8883/MyApp/ExtDirectProxy.ashx 500 (Internal Server Error) index.html:27 Uncaught TypeError: Cannot read property ‘isProvider’ of null ext-all-debug.js:74832 allow right click initializing for http://uhc-8:8883/MyApp/index.html rightclick.js:1 allow right click processing http://uhc-8:8883/MyApp/index.html rightclick.js:25