我使用ServiceStack(非常棒)构建了一个简单的 Rest 服务,它返回一个键值对列表。
我的服务如下所示:
public class ServiceListAll : RestServiceBase<ListAllResponse>
{
public override object OnGet(ListAllResponse request)
{
APIClient c = VenueServiceHelper.CheckAndGetClient(request.APIKey, VenueServiceHelper.Methods.ListDestinations);
if (c == null)
{
return null;
}
else
{
if ((RequestContext.AbsoluteUri.Contains("counties")))
{
return General.GetListOfCounties();
}
else if ((RequestContext.AbsoluteUri.Contains("destinations")))
{
return General.GetListOfDestinations();
}
else
{
return null;
}
}
}
}
我的回复是这样的:
public class ListAllResponse
{
public string County { get; set; }
public string Destination { get; set; }
public string APIKey { get; set; }
}
我已将其余 URL 映射如下:
.Add<ListAllResponse>("/destinations")
.Add<ListAllResponse>("/counties")
调用服务时
我收到此异常(未命中服务第一行中的断点):
NullReferenceException 对象引用未设置为对象的实例。在 ServiceStack.Text.XmlSerializer.SerializeToStream(Object obj, Stream stream) 在 ServiceStack.Common.Web.HttpResponseFilter.<GetStreamSerializer>b_ 3(IRequestContext r, Object o, Stream s) 在 ServiceStack.Common.Web.HttpResponseFilter.<> c _DisplayClass1.<GetResponseSerializer>b__0(IRequestContext httpReq, Object dto, IHttpResponse httpRes) at ServiceStack.WebHost.Endpoints.Extensions.HttpResponseExtensions.WriteToResponse(IHttpResponse response, Object result, ResponseSerializerDelegate defaultAction, IRequestContext serializerCtx, Byte[] bodyPrefix, Byte[]体后缀)
无论我是否在调用中包含任何参数,都会引发异常。我还在同一个项目中创建了许多其他类似的服务,它们运行良好。谁能指出我正确的方向,这意味着什么?