我有一个像这样的简单服务:
[Route("/Message/{Folder}", "GET")]
public class MessageList : IReturn<List<Message>>
{
public string Folder { get; set; }
}
public class MessageListService : Service
{
private readonly IDatabase _database;
public MessageListService(IDatabase database)
{
_database = database;
}
public List<Message> Get(MessageList request)
{
return _database.Fetch<Message>(
"EXEC GetMessage @@Folder=@1", request.Folder);
}
我这样称呼它:
http://localhost/Message/Inbox
不知何故,该服务被击中了两次:首先是正确的请求,然后再次使用未定义的 request.Folder。奇怪的是,即使第二次调用也不返回任何数据,框架总是从第一次调用返回正确的结果。所以我从来没有注意到这一点,直到碰巧运行了一个 SQL 分析器。
我无法弄清楚导致重试的确切原因。我认为这可能与数据有关,因为如果我通过我的剃须刀 UI 调用 Inbox,它不会重复。如果我打电话给存档,那就可以了。但是,如果我使用像 XYZ 这样不返回数据的随机参数调用,它也会重复调用。
但是,如果我这样调用服务:
http://localhost/Message/Inbox?format=json
然后它总是两次服务,一次有效,一次没有输入参数。但是 Json 结果似乎总是正确的。第二个无效调用刚刚命中数据库然后消失了。
真的需要一些帮助。知道发生了什么吗?