【问题标题】:ASP.NET: Why can't I call a web-service twice in one page?ASP.NET:为什么我不能在一个页面中调用 Web 服务两次?
【发布时间】:2010-05-11 09:44:48
【问题描述】:

我构建了一个 Web 应用程序,它在应用程序的登录页面中调用 Web 服务两次 - 第一次是在 Page_Load 上,第二次是在单击按钮后。 调试时,一切顺利,但在发布 Web 应用程序并尝试之后 - 我无法对 Web 服务进行两次调用(每个调用都在同一个 Web 服务中调用不同的函数)。

如果我调用它一次(例如,在 Page_Load 中)它没问题,但是一旦我到达按钮单击事件,页面似乎正在加载但实际上什么也没做(加载到无穷大)。

当我在 Page_Load 中禁用 Web 服务调用时,单击按钮后的 Web 服务调用运行良好,如果我在它们之间切换(禁用按钮单击中的调用并启用 Page_Load 中的调用),启用的调用工作正常好的。

这是怎么回事?我做错了什么? 是否与我发布 Web 应用程序的位置有一些 URL 重写规则有关?


我不使用 (!isPostBack) - 我确实尝试在按钮单击事件之后进行两次调用,但仍然遇到同样的问题。

相关部分代码:

protected void Page_Load(object sender, EventArgs e)
{
    MyService.Functions service = new MyService.Functions();
    string str = service.DigestURL(Request.RawUrl.ToString());
    ...
}


public void submitButton_Click(object sender, ImageClickEventArgs e)
{
    MyService.Functions service = new MyService.Functions();
    string str = service.CommitLogIn(usernameText.Text, passwordText.Text);
    ...
}

【问题讨论】:

    标签: c# asp.net web-services web-applications


    【解决方案1】:

    你能显示一些代码段吗?您是否使用Page_Load 中的(!isPostBack) 来调用Web 服务?单击按钮时会触发Page_Load。这里面可能有问题。

    【讨论】:

      【解决方案2】:

      如果您使用的是 WCF,请确保关闭客户端。我之前没有关闭它时也有类似的行为。

      【讨论】:

      • 第一次调用 web 服务后我确实尝试了 service.Abort() 和 service.Dispose(),但仍然没有帮助......
      猜你喜欢
      • 2017-06-13
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多