更新(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) 我将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) 在新安装的Windows 10企业版1703中,我尝试通过“打开或关闭Windows功能”打开IIS功能(默认选项),但遇到以下错误:
然后,我尝试使用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)
导致相同的错误。
我怎样才能解决这个问题?
这是我尝试过的:
hostsettings.json到执行项目的根目录:{
"Environment": "Production"
}
Run Code Online (Sandbox Code Playgroud)
纳达。
为了使用该appsettings.Production.json文件,您究竟如何指定生产机器?