Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebOperationContext.Current.OutgoingResponse.StatusCode不工作_C#_.net_Wcf_Wcf Rest - Fatal编程技术网

C# WebOperationContext.Current.OutgoingResponse.StatusCode不工作

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())

在WCF REST API中,出于某种原因,我想设置自己的状态码-

 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 );