C# RestClient-请求返回500个内部服务器错误(内容为html)和无错误消息

C# RestClient-请求返回500个内部服务器错误(内容为html)和无错误消息,c#,asp.net,json,response,restsharp,C#,Asp.net,Json,Response,Restsharp,我在使用REST客户端执行PUT请求时遇到问题。我在《邮递员》中也尝试了同样的方法,我得到了一个带有正确错误信息的错误回复。所以我在C#RestSharp请求电话中也期待着同样的结果。相反,我得到一个500内部服务器错误,request.ErrorException=null,request.ErrorMessage=null。在有人指责我使用请求头之前,我设置了Request.AddHeader(“Accept”,“application/json”) 我的代码是这样的 var client

我在使用REST客户端执行PUT请求时遇到问题。我在《邮递员》中也尝试了同样的方法,我得到了一个带有正确错误信息的错误回复。所以我在C#RestSharp请求电话中也期待着同样的结果。相反,我得到一个500内部服务器错误,request.ErrorException=null,request.ErrorMessage=null。在有人指责我使用请求头之前,我设置了Request.AddHeader(“Accept”,“application/json”)

我的代码是这样的

var client = new RestClient(uri);
var request = new RestRequest(Method.PUT);
request.AddHeader("Accept", "application/json");`
request.AddParameter("xx...", value); 
var response = client.Execute(request);
var content = response.Content;   
现在我看到的response.Content是下面的html(我只发布部分内容以供参考)


运行时错误
正文{字体系列:“Verdana”;字体重量:正常;字体大小:.7em;颜色:黑色;}
p{字体系列:“Verdana”;字体大小:正常;颜色:黑色;页边顶部:-5px}
{字体系列:“Verdana”;字体大小:粗体;颜色:黑色;页边顶部:-5px}
H1{字体系列:“Verdana”;字体重量:正常;字体大小:18pt;颜色:红色}
H2{字体系列:“Verdana”;字体重量:正常;字体大小:14pt;颜色:褐红色}
前{字体系列:“控制台”,“Lucida控制台”,单空格;字体大小:11pt;边距:0;填充:0.5em;线条高度:14pt}
.marker{字体大小:粗体;颜色:黑色;文本装饰:无;}
.version{color:gray;}
.错误{页边距底部:10px;}
.expandable{文本装饰:下划线;字体大小:粗体;颜色:海军蓝;光标:手;}
@媒体屏幕和屏幕(最大宽度:639px){
pre{width:440px;溢出:自动;空白:预换行;换行:断开单词;}
}
@媒体屏幕和屏幕(最大宽度:479px){
前{宽度:280px;}
}
.....
....
现在,在我的包装器方法中,我正在检查状态码是否不是200,然后检查request.ErrorException是否为null,在本例中只是显示一条通用消息“出了问题…”这类事情。现在这只是一个绷带解决方案。我想知道如何获得准确的错误响应或如何处理这种情况


非常感谢您的帮助。

在web服务中,除非您将错误消息显式设置为其属性之一,否则将永远不会返回实际错误。例如,在WebAPI中,可以使用Request.CreateResponse()方法返回错误消息。该方法需要返回HttpResponseMessage类型。下面是代码

[HttpPut]
public HttpResponseMessage MyPutMethod()
{
try
{
...process
return Request.CreateResponse(HttpStatusCode.OK, "Success");
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
}
}
注意:出于安全原因,发送异常详细信息不是一个好主意

[HttpPut]
public HttpResponseMessage MyPutMethod()
{
try
{
...process
return Request.CreateResponse(HttpStatusCode.OK, "Success");
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
}
}