WCF 服务.如何返回 HTTP 500 响应

本文关键字:HTTP 响应 返回 服务 何返回 WCF | 更新日期: 2023-09-27 18:30:15

>我有一个WCF服务,它访问注册表并返回值。我想在某些情况下返回 HTTP 500 响应,例如当我从注册表返回空值而没有任何异常时。这是我的代码。我想返回 HTTP 500 响应,而不是返回"null"字符串。

private string baseKey = "SOFTWARE''Action''software''Station";
public string GetCode()
{
    string Code;
    try
    {
        using (RegistryKey regKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
            Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32))
        {
            using (RegistryKey subKey = regKey.OpenSubKey(baseKey, false))
            {
                Code = (string)subKey.GetValue("Code");
            };
        };
        return string.IsNullOrEmpty(Code) ? "null" : Code;
    }
    catch (Exception ex)
    {
        return "null";
    }
}

如何创建此 HTTP 500 响应以返回到客户端?

请帮忙。

WCF 服务.如何返回 HTTP 500 响应

Dif 你试过这个?

throw new WebFaultException<string>("Registry key not found", HttpStatusCode.InternalServerError);
如果出现

异常 WCF,WCF 会将 HTTP 状态设置为 500 并返回错误。

换句话说,引发异常以向客户端返回 500 响应。

您可以注入状态代码,如下所示:

WebOperationContext ctx = WebOperationContext.Current;
ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.InternalServerError;

注意:InternalServerError是映射到 HTTP 500 的HttpStatusCode枚举值。