2013-09-05 3 views
2

У меня есть служба WCF, которая обращается к реестру и возвращает значение. Я хотел бы вернуть ответ HTTP 500 в некоторых случаях, например. когда я получаю нулевые значения, возвращаемые из реестра, без каких-либо исключений. Вот мой код. Вместо того, чтобы возвращать строку «null», я хочу вернуть ответ HTTP 500.Служба WCF. Как вернуть ответ HTTP 500

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

Dif вы попробовали это?

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

Круто. Большое спасибо. – Newbee

3

Если исключение связано с WCF, WCF установит статус HTTP на 500 и вернет ошибку.

Другими словами, выведите исключение, чтобы вернуть ответ 500 на клиента.

3

Вы можете вводить код состояния, например:

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

Примечание: InternalServerError это значение HttpStatusCode перечисления, что карты для HTTP 500.

+0

Большое спасибо Карлу. Я нашел нечто похожее на реализацию. – Newbee

+0

Отлично, рад, что вы нашли то, что вам нужно. :-) –

Смежные вопросы