我试图了解如何处理来自ServiceStack服务的Silverlight中的异常。
public class TestService : Service
{
public object Any (TestRequest request)
{
throw new Exception("Name");
var lst = new List<TestResponse>();
for (int i = 0; i < 20; i++)
{
var item = new TestResponse { ID = i, Descrizione = string.Format("Descr_{0}", i) };
lst.Add(item);
{
}
return lst;
}
}
}
我在wiki中看到泛型异常是作为500 InternalServerError
处理的,但是当我在示例中抛出异常时,我没有在参数中收到异常数据(但是使用fiddler我可以看到Json中的所有数据。)
我的SilverLight代码是
private ServiceClient<TestRequest, ContainerTestResponse> serviceClient;
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
serviceClient = new ServiceClient<TestRequest, ContainerTestResponse>();
serviceClient.Completed += serviceClient_Completed;
}
void serviceClient_Completed(object sender, ServiceClientEventArgs<ContainerTestResponse> e)
{
var webEx = e.Error as WebException;
if (webEx != null)
{
//can't figure out where "Name" is...
var webResponse = (HttpWebResponse)webEx.Response;
MessageBox.Show(webResponse.StatusDescription);
return;
}
if (e.Error != null)
throw e.Error;
var result = e.Response.Dati;
}
}
我的JSon回复是
{"ResponseStatus":{"ErrorCode":"Exception","Message":"Name","StackTrace":"[TestRequest: 19/11/2013 15:39:29]:\n[REQUEST: {}]\nSystem.Exception: Name\r\n at SSAuthenticationProvider.TestService.Any(TestRequest request) in c:\\projects\\2013\\Demo\\SSAuthenticationProvider\\SSAuthenticationProvider\\TestService.cs:line 20\r\n at ServiceStack.ServiceHost.ServiceRunner`1.Execute(IRequestContext requestContext, Object instance, TRequest request)","Errors":[]}}
我做错了吗?
全部谢谢