小编J.D*_*len的帖子

Azure DocumentDB偶尔会抛出SocketException/GoneException

更新(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信息:

  • 美国东部2
  • 1000 RU/s
  • 标准层
  • 会话一致性
  • 懒惰索引策略:

    {"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)

c# azure .net-core azure-cosmosdb

7
推荐指数
1
解决办法
2098
查看次数

只有1个主方法的XUnit测试项目:"程序定义了多个入口点."

我将vNext格式的.NET xUnit测试项目(带有project.json)转换为Visual Studio 2017 RC中的新.csproj格式,并开始收到以下错误.这个错误的大多数在线答案都说"你有两个主要方法;摆脱一个." 这似乎是一个明显的解决方案,但这个项目只有一个Main方法.

错误:

CS0017程序定义了多个入口点.使用/ main编译以指定包含入口点的类型.Project.Name C:\ path\to\Program.cs

Program.cs中:

using XunitProgram = Xunit.Runner.DotNet.Program;

namespace My.Namespace.Tests
{
    public static class Program
    {
        public static void Main(string[] args)
        {
            XunitProgram.Main(args);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

老project.json:

{
  "version": "1.0.0-*",
  "testRunner": "xunit",
    "buildOptions": {
        "emitEntryPoint": true,
        "preserveCompilationContext": true,
        "debugType": "full"
    },

    "dependencies": {
        "dotnet-test-xunit": "2.2.0",
        "xunit": "2.2.0",
        "Microsoft.DotNet.InternalAbstractions": "1.0.0"
    },
  "frameworks": {
    "net462": {}
  }
}
Run Code Online (Sandbox Code Playgroud)

新Project.csproj:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>net462</TargetFramework>
        <RuntimeIdentifier>win7-x86</RuntimeIdentifier>
        <DebugType>full</DebugType>
        <PreserveCompilationContext>true</PreserveCompilationContext>
        <AssemblyName>My.Project.Tests</AssemblyName>
        <OutputType>Exe</OutputType>
        <PackageId>My.Project.Tests</PackageId>
        <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
        <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
        <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
        <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
        <RootNamespace>My.Project.Tests</RootNamespace> …
Run Code Online (Sandbox Code Playgroud)

c# xunit .net-core visual-studio-2017

7
推荐指数
2
解决办法
3337
查看次数

在Windows 10上安装IIS时出现错误0x800f0922:“更改无法完成。”

在新安装的Windows 10企业版1703中,我尝试通过“打开或关闭Windows功能”打开IIS功能(默认选项),但遇到以下错误:

Windows功能错误

然后,我尝试使用DISM安装该功能。我打开了一个管理员命令提示符并输入:

Dism /Online /Enable-Feature /FeatureName:IIS-DefaultDocument /All
Run Code Online (Sandbox Code Playgroud)

这应该与为IIS安装默认功能集相同。这也失败,并显示相同的错误代码0x800f0922。

最后,我尝试一次从“打开和关闭Windows功能”菜单中一次选择IIS元素。这一直有效,直到我尝试安装“ HTTP错误”为止,该错误再次产生了上面的窗口。

运行此命令:

Dism /Online /Enable-Feature /FeatureName:IIS-HttpErrors /All
Run Code Online (Sandbox Code Playgroud)

导致相同的错误。

我怎样才能解决这个问题?

windows iis

7
推荐指数
1
解决办法
6892
查看次数

如何为 .NET Core 3.0 Worker Service 设置环境?

这是我尝试过的:

  1. 我看了一眼Host.CreateDefaultBuilder的源代码,然后将环境变量 DOTNET_Environment 设置为“Production”。那失败了。
  2. 于是我尝试了经典的 ASPNETCORE_ENVIRONMENT。不。
  3. 然后我尝试添加hostsettings.json到执行项目的根目录:
{
    "Environment": "Production"
}
Run Code Online (Sandbox Code Playgroud)

纳达。

为了使用该appsettings.Production.json文件,您究竟如何指定生产机器?

.net-core

5
推荐指数
1
解决办法
4449
查看次数