ASP.Net Web应用程序DLL加载问题

时间:2011-06-16 16:59:42

标签: c# .net asp.net webforms

我有一个自定义dll加载到我的Web应用程序中,我更新了它并在我的主Web应用程序中重新加载了引用。基本上它的工作方式是用户上传一个由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/");
        }

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

1 个答案:

答案 0 :(得分:2)

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

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