【问题标题】:works correctly on localhost but fails sometimes online在本地主机上正常工作,但有时在线失败
【发布时间】:2011-03-03 08:15:24
【问题描述】:

我有以下问题,我在运行这个网站时(本地)制作了一个网站我得到了正确的数据(例如我根据城市选择有一组城市,我得到了所需的数据),但是当我发布网站并在线尝试时(在我之前在本地尝试过的相同条件下,我得到的数据不正确)。

我不知道问题出在哪里;我需要在线跟踪代码(在线调试代码)才能知道问题出在哪里。

对于如何处理这种情况,代码在本地以正确的方式工作,但有时在线失败,有什么建议吗?

注意
- 我在线使用 (https)。
- 我使用静态变量(不应该改变)但是在线,这个变量的值正在改变并导致这个问题。

【问题讨论】:

  • 这是静态数据还是在数据库中?
  • 如何使用一些日志框架,看看你的应用程序运行时发生了什么?您可以记录 sql 查询 etc.log4net 将是一个不错的选择。

标签: .net asp.net iis proxy debugging


【解决方案1】:

“不正确的数据”是随机垃圾(如未初始化的变量)还是合理的数据,只是不是您期望的数据?

如果您使用 XmlHttpRequest 加载数据,请检查浏览器 javascript 中的跨域引用。 XmlHttpRequest 中 URL 的方案、域名和端口号必须与包含 HTML 页面的 URL 匹配。浏览器不会对从 localhost 加载的页面执行与从“真实” URL 加载的页面相同的域来源安全策略。这可能会导致从 localhost 与从真实 URL 加载页面时的行为差异。

尝试从 127.0.0.1 而不是 localhost 加载您的页面。如果问题重现在 127.0.0.1 但不在 localhost 上,则很可能您的 JavaScript 中有某种跨域引用。浏览器对“localhost”域给予特殊处理,但对 127.0.0.1 不给予特殊处理,即使它映射到同一事物。

【讨论】:

  • 是否保留端口号??当我删除端口号时它不起作用
  • 如果您使用端口号来加载 HTML 页面,那么您必须为返回服务器的所有 XmlHttpRequest 使用相同的端口号。 HTML 页面 URL 和 XmlHttpRequest URL 或浏览器同源安全模型之间的方案(http 或 https)、dns 名称和端口号高度匹配将阻止数据请求。
  • 好的,如果您获得“有效”的数据,但它不是您期望的数据,那么这可能不是跨域请求问题。这更有可能是代理或缓存问题。
  • 这种情况正好在使用方案(https)的时候出现,不知道是什么问题??
  • 如何解决这个问题。
【解决方案2】:

首先为 ASPX 页面启用跟踪:

<% @Page Trace="[True|False]" %> 

启用跟踪后,您可以确定问题的原因。

【讨论】:

  • 你能给我更多的细节吗,你的意思是如果我放一个断点,我可以在线追踪代码吗?
【解决方案3】:

最后,我检测到问题,我将一些变量用作静态变量(我认为每个用户都是静态成员)但它在内存中的所有用户之间共享,所以当我在本地尝试我的 Web 应用程序时(一个用户)没有出现错误,但是当我发布它时,不止一个用户,所以如果一个用户选择特定城市而另一个用户在选择另一个城市(静态变量值发生变化并且我得到不正确的数据。当我将静态更改为会话时,问题一直是解决了。​​。

但我想问一下如何在线调试并设置断点来跟踪代码并检测类似的错误..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多