【发布时间】:2016-02-02 13:45:21
【问题描述】:
我必须调试一个离开公司的人的旧 VB.NET 2.0 代码。我们有一个生产系统(我们称之为http://prod)和一个测试系统(http://test)。两者几乎相似,包括文档存储库。在生产中查看文档时,底部显示的所有超链接都可以(意味着它们会说类似http://prod/download.ashx?id={GUID})。
但在测试中它是相同的 (http://prod/download.ashx?id={GUID}),即使它应该是 http://test/download.ashx?id={GUID}。
经过几个小时的调试,我找到了相关的代码行:
html += "<td><a href='" + HttpContext.Current.Request.Url.AbsoluteUri.Replace(HttpContext.Current.Request.Url.PathAndQuery, "/") + "int/download.ashx?id=" + row.Item(0).ToString() + "' target='_blank' class='" + row.Item(3).ToString() + "'>" + row.Item(1).ToString() + "</a>" + privat + "</td><td>" + row.Item(2).ToString() + "</td>"
看着html,这表明了
"<table class='table_dataTable'><thead><tr><td>Name</td><td>Jahr</td></tr></thead><tbody><tr><td><a href='http://prod/int/download.ashx?id=4d280886-db88-4b25-98d8-cf95a685d4a4' target='_blank' class='doc'>Document for managers</a></td><td>2014</td>"
所以我想知道,这不正确地来自哪里?我可能已经找到了编码的相关部分,但我不确定,如果我在这方面是正确的,现在应该分别做什么?:
Public Class download : Implements IHttpHandler, IReadOnlySessionState
Dim debug As String = ""
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim fehler As String = ""
Try
' Get the file name from the query string
Dim queryFile As String = context.Request.QueryString("id")
debug += "id=" + queryFile + "<br>"
感谢任何帮助,因为 VB.NET 不是我的主要关注点。
【问题讨论】:
-
HttpContext.Current.Request.Url.AbsoluteUri.Replace(HttpContext.Current.Request.Url.PathAndQuery, "/")会以什么形式出现?这将是对错误 URL 的初步想法,尽管也可能是 html 变量稍后在其上运行了一些替换,从而取出了测试 URL。 -
它说的是
'http://prod/int/。这有什么帮助? -
如果是这种情况,那么我想知道在该方法之前是什么导致了链接的配置问题。考虑一下这如何缩小代码中可以找到问题的位置,以了解这有什么帮助。
-
如果我自己找到了代码的相关部分,我就不会在这里问这个问题 ;-)。
-
现在的问题是什么可以更新 HttpContext 以在其中包含错误的 URL 信息,这是此过程的下一轮。可能有很多工作要解决问题的核心,而我在 VB.Net 方面的经验有限,我试图在这里提出想法和建议。请注意,这仍然是 cmets,而不是我给出的答案。
标签: asp.net .net vb.net httpcontext ihttphandler