c# - WebOperationContext.Current.OutgoingResponse.StatusCode 不起作用

标签 c# .net wcf wcf-rest

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

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

但这里的restResponse.StatusCode始终是HttpStatusCode.OK。

我可以知道原因吗?这里出了什么问题?

添加:-

我尝试在休息服务方法中使用以下内容 -

throw new WebFaultException<string>(<...Your message....>, HttpStatusCode.Forbidden );

但这种方法的问题是在客户端......它使代码出来

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;

有什么建议吗?

最佳答案

在 WCF Rest API 中,您可以使用它

throw new WebFaultException<string>(<...Your message....>, HttpStatusCode.Forbidden );

关于c# - WebOperationContext.Current.OutgoingResponse.StatusCode 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18644977/

相关文章:

c# - 检查对象是否可以转换为特定值类型?

c# - 以编程方式创建自动调整列大小的 Excel 工作表

c# - 如何强制执行 C#/.NET 的代码样式,例如 IDE0058、IDE0059 和 IDE0060?

wcf - 从.net core调用Service Fabric

C# : how can i switch between my two network interface

c# - SQL 查询 : How to determine "Seen during N hour" if given two DateTime time stamps?

c# - .NET Decimal.Parse 在使用句点作为千位分隔符时抛出 FormatException

c# - 如何将多个对象发送到 WCF 方法

jquery - 使用 basichttpbinding 调用 wcf webservice,无需 REST 或 JSON

c# - Prism 2.1 将模块注入(inject) ViewModel