如何调试对WebMethod的调用

时间:2015-07-24 08:33:59

标签: c# asp.net iis webrequest webmethod

我正在实施一个aspx网站。我有一个网页上有几个webmethod。

通过示例:

public partial class MyWebService : System.Web.UI.Page
{
    [WebMethod]
    public static string GetProfileInformations(int userId)
    {
        ...
    }
}

我从C#/ winform重型客户端调用此方法。 在我的开发环境中都可以正常工作(IIS 7.5)。但是在生产中(也是IIS 7.5但可能在配置上有不同的东西),当我用一个带有参数的webmethod调用web服务器时,我的重客户端从服务器得到了一个错误500。

在我的重型客户端代码下面执行对webmethod的请求:

    private JObject DoWebRequest(string webMethod, string parameters)
    {
        string url = ConfigurationManager.AppSettings["WebServiceRootUrl"] + webMethod;
        HttpWebRequest theWebRequest = (HttpWebRequest)WebRequest.Create(url);
        theWebRequest.Method = "POST";
        theWebRequest.KeepAlive = true;
        theWebRequest.CookieContainer = new CookieContainer();
        theWebRequest.UserAgent = "Acet BadgeReader 1.0";
        theWebRequest.Headers[HttpRequestHeader.Pragma] = "no-cache";
        theWebRequest.Accept = "application/json, text/javascript, */*; q=0.01";
        theWebRequest.ContentType = "application/json";

        theWebRequest.Credentials = CredentialCache.DefaultCredentials;
        theWebRequest.PreAuthenticate=true;

        using (var writer = theWebRequest.GetRequestStream())
        {
            var data = Encoding.ASCII.GetBytes(parameters);
            writer.Write(data, 0, data.Length);
            writer.Flush();
            writer.Dispose();
        }


        string resultData = null;
        try
        {

            using (HttpWebResponse response = (HttpWebResponse)theWebRequest.GetResponse())
            {
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    resultData = reader.ReadToEnd();
                    resultData = resultData.Trim();
                    reader.Dispose();
                }
                response.Close();
            }
        }
        ...
    }

由于参数是dinamically构建的,我认为参数字符串中的错误可以解释此错误500.而且,如果我使用错误的参数调用webmethod GetProfileInformations(例如通过使用&#34设置参数字符串; {\" user \":}"而不是" {\" userId \":10}",我收到的错误500来自服务器,但无法在aspx代码中捕获此错误,或在IIS中检索日志...所以附加:(?是否有可能在aspx代码中捕获此类错误?

编辑:

感谢您的评论。所以我使用了Fiddler我在一个错误的请求的答案下面找到了一些新的信息:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
jsonerror: true
X-Powered-By: ASP.NET
Date: Fri, 24 Jul 2015 10:00:46 GMT
Content-Length: 91

{"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""}

但不幸的是,错误消息不是很有帮助。如果正确配置了IIS,错误消息可能会更加冗长...

0 个答案:

没有答案