我有一个自定义的 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/