我正在实施一个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,错误消息可能会更加冗长...