【问题标题】:Call WCF method OnUnload of ASP.NET page调用 ASP.NET 页面的 WCF 方法 OnUnload
【发布时间】:2015-12-30 17:30:56
【问题描述】:

我想在应用程序退出时调用 WCF 方法,但是,当我尝试使用此代码运行 ASP.NET 应用程序时:

protected override void OnUnload(EventArgs e)
{
    base.OnUnload(e);

    MaChatServer.Service1Client proxy = new MaChatServer.Service1Client();
    proxy.RemoveUser(UsernameStatic);
    if (proxy.GetAllUsers().Count == 0)
    {
        proxy.ResetServer();
    }
}

我看到这个错误页面:

说明:在执行当前 Web 请求期间发生未处理的异常。有关错误及其在代码中的来源的更多信息,请参阅堆栈跟踪。异常详细信息:System.ServiceModel.FaultException:服务器无法处理请求二为内部错误。有关该错误的更多信息,请在服务器上打开 IncludeExceptionDetailInFaults(来自 ServiceBehaviorAttribute 或来自配置行为)以便将异常信息发送回客户端,或者根据 Microsoft .NET Framework SDK 文档打开跟踪并检查服务器跟踪日志。

【问题讨论】:

  • 您是否按照错误消息所述进行操作?您是否启用了跟踪以查看实际错误?
  • 请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”!
  • 如何启用它?
  • 可以在浏览器中打开端点吗?服务有效吗?
  • 是的,是的,只有当我添加这个时它才起作用:protected override void OnUnload(EventArgs e) { base.OnUnload(e); MaChatServer.Service1Client 代理 = 新的 MaChatServer.Service1Client(); proxy.RemoveUser(UsernameStatic); if (proxy.GetAllUsers().Count == 0) { proxy.ResetServer(); } }

标签: c# asp.net wcf


【解决方案1】:

首先我建议您将配置添加到您的主机 wcf 服务 (.config)

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="debug">
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

因为您没有确切的错误消息,所以您的消息必须发送给您的客户

【讨论】:

  • 我已经这样做了,但现在页面无法正常工作,但如果我删除受保护的覆盖 void OnUnload(EventArgs e) { base.OnUnload(e); MaChatServer.Service1Client 代理 = 新的 MaChatServer.Service1Client(); proxy.RemoveUser(UsernameStatic); if (proxy.GetAllUsers().Count == 0) { proxy.ResetServer(); } } ,它的工作原理
猜你喜欢
  • 2011-01-23
  • 2014-03-09
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多