代码之家  ›  专栏  ›  技术社区  ›  Brian

如何确定WebMethod在WebService中被调用的内容

  •  3
  • Brian  · 技术社区  · 16 年前

    情况就是这样。我有一个asp.net webservice应用程序…比如说一个名为api.asmx的页面

    在代码背后,我有几个方法,例如:

    [WebMethod(Description="Method1")]
    public int GetSomething(int num1, int num2){
      try{
        return SomeObject.DatabaseCall.DoSomething(num1, num2);
      }
      catch(Exception ex){
        object[] pars = new object[] { num1, num2 };
        LogError("GetSomething", pars, ex);
      }
    }
    
    [WebMethod(Description="Method2")]
    public int GetSomething2(string w, string j, int f){
      try{
        return AnotherObject.DoSomething(w, j, f);
      }
      catch(Exception ex){
        object[] pars = new object[] { w, j, f };
        LogError("GetSomething2", pars, ex);
      }
    }
    

    当然,这只是两个简单的例子,如果抛出异常,我可以记录传入的方法调用和参数。

    还有别的办法吗?是否有某种方法可以提取被调用的方法和/或参数。我想我希望有人会告诉我,我可以有一些功能,比如:

    LogError(ex);
    

    在该函数中,我可以访问一些服务器或环境变量,这些变量将公开被调用的方法。也许像currentcontext.webservicecall.magic属性…我需要用try/catch包装所有调用,然后键入方法名和参数吗,或者有其他方法访问此信息。

    希望这个问题不会太愚蠢。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Todd    16 年前

    任何未处理的异常都将冒泡到global.asax文件中的应用程序错误事件。从那里,您可以调用Server .GETLASTError()来检索异常实例。

    一旦有了异常,就可以查看堆栈跟踪。您还可以访问请求对象,这样您就可以准确地看到来自客户端的内容。

        2
  •  1
  •   mark w    16 年前

    异常对象具有StackTrace属性。输入方法应该在堆栈中。

        3
  •  0
  •   Keltex    16 年前

    logerror方法可以调用 Environment.StackTrace . 然后它就会“知道”什么方法叫它。