C# 回发时未触发Webhandler
我有一个上传图像的web应用程序,图像随后保存到服务器的临时文件夹中,并通过aspx页面上的webhandler显示 aspx的代码:C# 回发时未触发Webhandler,c#,asp.net,session,dynamic-data,C#,Asp.net,Session,Dynamic Data,我有一个上传图像的web应用程序,图像随后保存到服务器的临时文件夹中,并通过aspx页面上的webhandler显示 aspx的代码: <img src="PreviewImageQualityHandler.ashx" alt="Picture not loaded" runat="server" id="imagePreview" /> 我的问题是webhandler只在第一次上传图像时启动。如果我尝试上传一个新图像,webhandler永远不会启动 如果我从webhandle
<img src="PreviewImageQualityHandler.ashx" alt="Picture not loaded" runat="server" id="imagePreview" />
我的问题是webhandler只在第一次上传图像时启动。如果我尝试上传一个新图像,webhandler永远不会启动
如果我从webhandler中删除与会话相关的所有内容,它会在每次回发时触发,这是应该的
如果有人能解释我的问题,我将不胜感激
问候
弗朗西斯好的,重写我的答案(如果你没有看到以前的答案,请参阅历史)。关于代码的一些注释:
响应。编写。您无法确定它何时写入,并且通常无法在浏览器中看到它。使用asp:Literal
控件或asp:Label
。与当前问题相关,因为:如果你在浏览器中看不到它,可能你认为什么都没有发生
,以便正确关闭和处理流。按照当前的方式,只要线程处于活动状态,文件就会保持打开状态,这相当长
using(Bitmap bmp = (Bitmap)System.Drawing.Image.FromFile(sessID))
{
//.. your code...
using(MemoryStream.... etc)
{
....
}
}
不关闭的问题:下一次您将无法将新文件写入同一位置,您可能无法打开它进行读取,并且当代码启动时,您将很快用完可用的文件处理程序
<img src="myimage.ashx?id=1234" />
或者,1234
指的是磁盘上的东西,或者它指的是数据库中的东西,而数据库又指的是磁盘上的东西(更安全)我知道,总的来说有些问题。一个接一个地检查一下,看看是否有帮助。至少,您的代码会变得更加稳定。不幸的是,Francis,我似乎无法复制您看到的错误。也许在您发布的代码之外有什么东西导致了问题?我的赌注是在某处缓存。不知道是什么,也不知道在哪里。非常感谢!确实是图像的缓存问题。这可能有点“顽皮”,但“imagePreview.Src=”PreviewImageQualityHandler.ashx“+”?x=“+DateTime.Now;”让我摆脱痛苦!回答。写(“”);仅用于调试目的,将被删除。我很高兴它现在起作用了。请注意,即使出于调试目的,
Response.Write
也可能会对HTML或浏览器呈现HTML的方式造成严重破坏,这可能会导致许多副作用,导致比解决问题更多的问题。相反,考虑使用<代码>调试>编写< /COD>调试输出,并监视VisualStudio的调试窗口。另外:在投入生产时,调试。编写不会妨碍您的代码。再次感谢!我一定会重新编写代码,使用“using”。我已经考虑过在数据库中放置一个唯一的ID,但是由于用户登录的方式,该用户ID在mypage.aspx?ID=1234中不可用,所以我的同事建议我不要这样做。不带任何内容的catch all用于调试,其中有一个断点:)。我完全不知道Debug.Write()。从现在起,我将使用它。非常感谢您抽出时间!问候弗朗西斯
using(Bitmap bmp = (Bitmap)System.Drawing.Image.FromFile(sessID))
{
//.. your code...
using(MemoryStream.... etc)
{
....
}
}
<img src="myimage.ashx?id=1234" />