我有一个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响应以返回客户端?
请帮忙。
答案 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
枚举值。