c# - ASP.Net Web 应用程序 dll 加载问题

标签 c# .net asp.net webforms

我有一个自定义的 dll 加载到我的网络应用程序中,我更新了它并在我的主网络应用程序中重新加载了引用。基本上它的工作方式是用户上传一个文件,该文件由 dll 中的函数检查。然后,用户可以单击结果部分上的一个按钮,该按钮会重定向到应用程序的主要部分,这样他们就可以选择重新运行检查程序;我说部分是因为 Web 应用程序使用一个包含两个 div 的页面,一个用于表单,一个用于结果,然后后面的代码将表单 div 的可见性与结果 div 交换,这里是要阐明的基本布局。

<body>
  <div id="divForm" style="visibility: visible;">
  </div>

<div id="divResults">
  </div>
</body>

重定向调用在后面的代码中如下:

protected void btnReturn_Click(object sender, EventArgs e)
        {
            Response.Redirect("http://localhost/file_checker/");
        }

文件检查器的主要部分:

protected void Page_Load(object sender, EventArgs e)
{
    divForm.Visible = true;
    divResults.Visible = false;
    if (Page.IsPostBack)
    {
       //Do file checking

       //Show results
       divResults.Visible = true;
       divForm.Visible = false;
    }
}

Web 应用程序在第一次通过时运行良好,但是,我注意到在每次后续通过后出现奇怪的行为。例如,我注意到结果页面显示了旧版本 dll 的陈旧内容,即它显示了一个由旧版本的 dll 生成的字符串,我已经删除了该字符串,但它仍然会生成。我不确定我的重定向是否正确,或者我是否对重定向的工作方式存在其他一些基本误解。感谢您提供任何帮助或见解。

更新:

好的,我没有重定向,而是在我的结果部分清除了一个 gridview 并交换了 div 的样式以显示主要部分并隐藏结果部分,如下所示:

protected void btnReturn_Click(object sender, EventArgs e)
        {
            //Clear the Gridview and show the upload Form
            GridView1.DataSource = null; //<--Is popoulated by a DataTable
            divForm.Visible = true;
            divResults.Visible = false;

            //Response.Redirect("http://localhost/file_checker/");
        }

这似乎解决了问题,我有一个挥之不去的问题是,我正在使用数据表来填充结果页面中的 Gridview。 Datatable 是否在每次页面加载或按钮单击事件后自动处理?还是会一直存在?我只是想避免任何内存泄漏问题,因为每个页面加载都会实例化一个新的 DataTable 对象。

最佳答案

Response.Redirect 向浏览器发送 302 响应。然后浏览器向新位置发出新请求。所以这不是服务器端操作,浏览器可以缓存响应而不是再次调用。尝试附加一个查询字符串参数以使浏览器执行真正的请求。如果您有可用的 fiddler,您可以使用它来验证,但您可能正在从缓存中获取页面。

protected void btnReturn_Click(object sender, EventArgs e)
        {
            Response.Redirect(String.Format("http://localhost/file_checker/?{0}", DateTime.Now.Ticks));
        }

关于c# - ASP.Net Web 应用程序 dll 加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6375736/

相关文章:

c# - Unity 处理多个具有不同目的的碰撞器

c# - 将 BindingList 绑定(bind)到 ListBox 时遇到问题

c# - 如何针对双核、四核和更高的多处理器进行优化?

javascript - Html.TextBoxFor - 如何关闭历史记录

C# ASP.Net 找不到类型或命名空间名称 'iAnywhere'

c# - WPF 比粗体更粗

c# - EF 4.1 使用自定义类型处理资金

ASP.NET Core MVC 健康检查失败

C#使用锁实践

c# - 如何在支持主机中运行的程序的 I/O 的同时,使自定义 Powershell 主机适应 WPF 用户界面?