我使用Swagger来记录我的REST API(使用asp.net web api 2).对于给定的api调用,是否有一种方法可以为每个可能的响应提供响应模型?我正在使用xml注释来注释状态代码响应,如下所示:
/// <summary>
/// Save a person
/// </summary>
/// <response code="200">Ok</response>
/// <response code="400">Bad Request</response>
/// <response code="500">Internal Server error</response>
public HttpResponseMessage SavePerson() {...}
Run Code Online (Sandbox Code Playgroud)

我似乎无法在任何地方找到这些信息,或者我可能不理解它.在RabbitMQ的发布/订阅模式中,当生产者生成消息时,消费者如何知道队列中有新消息?
消费者是否经常轮询队列以检查是否有新消息或交换"推送"通知消费者是否有新消息?
我知道异步方法的目的不是提高性能,但我发现 StackExchange.Redis 上的异步方法比同步方法花费的时间要长得多。
public static async Task<bool> GetScoresFromSetAsync(int score, string name)
{
string redisConnection = ConfigurationManager.AppSettings["RedisAccount"].ToString();
ConnectionMultiplexer connection = ConnectionMultiplexer.Connect(redisConnection);
IDatabase _cache = connection.GetDatabase();
List<string> scores = new List<string>();
var resultAsync = await _cache.SortedSetRangeByScoreAsync(name, score, score);
var result = _cache.SortedSetRangeByScore(name score, score);
return true;
}
Run Code Online (Sandbox Code Playgroud)
异步调用平均耗时约 5000 毫秒,而非异步调用平均耗时约 30 毫秒。我的 redis 托管在 azure 上。有什么想法吗?
编辑:我在这里谈论的是一个请求。SortedSetRangeByScore api 调用将在 30 毫秒内返回,而 SortedSetRangeByScoreAsync api 调用将在 5000 毫秒内返回。
我使用 Azure Redis(使用 Stackexchange.Redis)作为缓存存储并且它通常工作正常。但是我不时收到超时错误,我无法确定为什么会发生这种情况。
我的 redis 连接设置:
value="dev.redis.cache.windows.net,ssl=true,password=secret,abortConnect=false,syncTimeout=3000"
Run Code Online (Sandbox Code Playgroud)
我在同一秒内收到所有这些异常(多次调用):[我也在 GET 操作中得到这些异常。几乎所有这些异常都在 StringSet 和 StringGet 上。我很少在 HashSets 或 HashGets 上遇到异常]
Timeout performing SET {key}, inst: 1, mgr: ExecuteSelect, queue: 6, qu=0, qs=6, qc=0, wr=0/0, in=0/0
SocketFailure on SET
SocketFailure on SET
No connection is available to service this operation: SET
Run Code Online (Sandbox Code Playgroud)
我猜测设置对象的时间比预期的要长,这可能是由于对象很大,所以我可能会增加同步超时,但这会隐藏一些其他问题吗?
我只在对 stackexchange.redis 的同步调用中得到这些异常,当调用是异步的时我没有看到异常。
堆栈跟踪:
StackExchange.Redis.RedisConnectionException: SocketFailure on SET
at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) i
at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server)
at StackExchange.Redis.RedisDatabase.StringSet(RedisKey key, RedisValue value, Nullable`1 expiry, …Run Code Online (Sandbox Code Playgroud)