C# WebOperationContext.Current.OutgoingResponse.StatusCode不工作
在WCF REST API中,出于某种原因,我想设置自己的状态码-C# WebOperationContext.Current.OutgoingResponse.StatusCode不工作,c#,.net,wcf,wcf-rest,C#,.net,Wcf,Wcf Rest,在WCF REST API中,出于某种原因,我想设置自己的状态码- WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Forbidden (or any other statuscode) 它与客户端完全不同:- using (HttpWebResponse restResponse = (HttpWebResponse)restRequest.GetResponse())
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Forbidden (or any other statuscode)
它与客户端完全不同:-
using (HttpWebResponse restResponse = (HttpWebResponse)restRequest.GetResponse())
{
if (restResponse.StatusCode != HttpStatusCode.OK)
{
retVal = String.Format("Request failed. Received HTTP {0}, Description : {1}", restResponse.StatusCode, restResponse.StatusDescription);
return retVal;
}
using (var st = restResponse.GetResponseStream())
{
StreamReader sr = new StreamReader(st);
retVal = sr.ReadToEnd();
return retVal;
}
}
但是这里resresponse.StatusCode始终是HttpStatusCode.OK
我可以知道原因吗?这里怎么了
添加内容:-
我尝试在Rest服务方法中使用以下内容--
没有必要使用--
有什么建议吗?在WCF Rest API中,您可以使用
throw new WebFaultException<string>(<...Your message....>, HttpStatusCode.Forbidden );
抛出新的WebFaultException(,HttpStatusCode.Forbidden);
@tdelpine,我甚至试图这样做,但问题是,在这种情况下,客户端代码来自“使用(HttpWebResponse response=(HttpWebResponse)restRequest.GetResponse())”语句并转到我不想要的错误页。您希望该客户端做什么???在web.config的system.web部分中将customErrors关闭
Try
{
using (HttpWebResponse restResponse = (HttpWebResponse)restRequest.GetResponse())
{
if (restResponse.StatusCode != HttpStatusCode.OK)
{
retVal = String.Format("Request failed. Received HTTP {0}, Description : {1}", restResponse.StatusCode, restResponse.StatusDescription);
return retVal;
}
using (var st = restResponse.GetResponseStream())
{
StreamReader sr = new StreamReader(st);
retVal = sr.ReadToEnd();
return retVal;
}
}
}
catch
{
//it comes here when using "throw new WebFaultException...."
}
retVal = String.Format("Request failed. Received HTTP {0}, Description : {1}", restResponse.StatusCode, restResponse.StatusDescription);
return retVal;
throw new WebFaultException<string>(<...Your message....>, HttpStatusCode.Forbidden );