更新(2/8/17):
见下面的答案.
更新(2/7/17):
我发现重启可以让我从Visual Studio 2015成功运行Web应用程序,并多次点击端点.但是,当我停止应用程序并重新启动它时,它很可能会失败.然后它将重复失败,直到我重新启动计算机.重启VS'15还不够好.
一旦它开始失败,从VS代码运行应用程序或从命令行运行dotnet.exe表现出相同的行为.
原始邮寄:
我们有一个微服务系统设置,可以从几个API和Azure Functions调用DocumentDB集合.它与API端(嵌套在一起)间歇性地失败.据我们所知,只要它偶尔起作用,调用它的代码大多是正确的.Azure功能可以正常工作.SocketExceptionGoneException
编辑澄清:"间歇性地",我的意思是它可能每天短暂工作一次或两次,然后在没有通话的剩余时间进入失败状态.这不像每100个左右的呼叫失败一样.这更像是1或2次成功呼叫后的不间断故障.
通过编写一个简单的控制台应用程序来从DocumentDB中读取并将结果打印到Debug输出,我能够重新创建相同的异常.这运行一两次没有任何问题,然后每次都开始抛出以下异常.它会在有几个小时之前执行此操作,然后再拨打几个电话,然后重新投入.
虽然下面的测试器是原始的,但主API充分利用了vNext项目结构.它使用单个DocumentClient进行连接(通过本机DI注入),它几乎完全异步从控制器一直到调用db的服务层.我们使用一个单独的库来管理对DocumentDB的访问(如果它们不存在则创建集合,添加扩展方法,简单的CRUD操作等),但是如下所示直接调用会产生相同的结果.
我注意到的一件事是它对于DocumentDB客户端("Microsoft.Azure.DocumentDB.Core": "1.0.0")的核心版本而言比在net46版本中更成功.由于其他库,我们的API需要4.6.
我可以在多台机器,多个网络,多种连接类型上重新创建它.
问题:为什么我们会收到此异常,我们如何解决?
Azure信息:
懒惰索引策略:
{"indexingMode":"lazy","automatic":true,"includedPaths":[{"path":"/*","indices":[{"kind":"Range","dataType":"Number ",""precision": - 1},{"kind":"Hash","dataType":"String","precision":3}]}],"excludedPaths":[]}
考试班
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Newtonsoft.Json;
namespace TestConnection
{
public class Program
{
public static void Main(string[] args)
{
try
{
using (var client = new DocumentClient(
new Uri("https://<our-docdb-name>.documents.azure.com:443/"),
"our access key",
new ConnectionPolicy
{
ConnectionMode …Run Code Online (Sandbox Code Playgroud)