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

时间:2013-09-05 16:22:14

标签: c# asp.net .net visual-studio-2010 wcf

我有一个WCF服务,它访问注册表并返回值。我想在某些情况下返回HTTP 500响应,例如当我从注册表返回null值时没有任何异常。这是我的代码。我想要返回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响应以返回客户端?

请帮忙。

3 个答案:

答案 0 :(得分:3)

如果异常冒泡到WCF,WCF会将HTTP状态设置为500并返回故障。

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

答案 1 :(得分:3)

你试过这个吗?

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

答案 2 :(得分:3)

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

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

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