我们正在寻找离线路由和反向地理编码服务.
GraphHopper宣称其Directions API可以自托管:
GraphHopper Directions API自托管/内部部署
Directions API作为云服务提供,您可以按需付费.API也可作为内部部署解决方案(自托管),为您提供最高性能,定制可能性,独立性; 一切都掌握在你手中!
根据这些说明在我的本地实例上安装GraphHopper之后,我能够通过localhost HTTP API成功执行路由查询.
如何使反向地理编码工作?我找不到任何关于此的文档,GitHub上的代码似乎没有任何暗示.
我在Azure Web App中运行ASP.NET 5项目.
当使用大约1.5mb或更大的文件(表单数据)调用API端点时,会引发以下异常.
有谁知道如何解决这个问题?有可能的解决方法吗?
System.IO.InvalidDataException: Unexpected end of request content at Microsoft.AspNet.Server.Kestrel.Http.MessageBody.ForContentLength.d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.WebUtilities.FileBufferingReadStream.d__27.MoveNext()
--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.WebUtilities.BufferedReadStream.d__39.MoveNext() --- End of stack trace from previous location where exception was thrown
--- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNet.WebUtilities.MultipartReaderStream.d__36.MoveNext()
--- …Run Code Online (Sandbox Code Playgroud) 有时当插入一小堆不同的文档(同步)时,我得到以下异常(请参阅下面的完整堆栈跟踪):
MongoDB.Driver.MongoWaitQueueFullException:获取与服务器xyz.mongolab.com:54128的连接的等待队列已满.
我MongoDatabase在我的所有存储库之间使用单例实例(因此是单个连接).基本上,我正在做这样的事情(每个集合中的文档不超过20个):
Context.Collection<ClientDocument>("clients").InsertMany(clients);
Context.Collection<VendorDocument>("vendors").InsertMany(vendors);
Context.Collection<SaleDocument>("sales").InsertOne(sale);
Run Code Online (Sandbox Code Playgroud)
以下是单例上下文:
public class MongoContext
{
public IMongoDatabase Database { get; }
public MongoContext(IOptions<MongoSettings> settings)
{
var url = MongoUrl.Create(settings.Value.EndpointUri);
var client = new MongoClient(new MongoClientSettings()
{
Server = url.Server
});
Database = client.GetDatabase(url.DatabaseName);
}
public IMongoCollection<TDocument> Collection<TDocument>(string collection)
where TDocument : IDocument
{
return Database.GetCollection<TDocument>(collection);
}
}
Run Code Online (Sandbox Code Playgroud)
在MongoDB的Jira(https://jira.mongodb.org/browse/CSHARP-1144)上提交了类似的东西,但是这些情况正在处理大量的大量插入(并且通常是异步的).
我认为不需要使用这么小的插件来增加MaxConnectionPoolSize或WaitQueueSize.
可能是什么原因造成的?
我正在使用mLabs中托管的MongoDB 3.0.7.我们的应用程序托管在Azure(作为Web应用程序),我使用的是C#2.2.3 SDK.
MongoDB.Driver.MongoWaitQueueFullException:获取与服务器xyz.mongolab.com:54128的连接的等待队列已满.在MongoDB.Driver.Core.ConnectionPools.ExclusiveConnectionPool.AcquireConnectionHelper.CheckingOutConnection()在MongoDB.Driver.Core.ConnectionPools.ExclusiveConnectionPool.AcquireConnection(的CancellationToken的CancellationToken)在MongoDB.Driver.Core.Servers.ClusterableServer.GetChannel(的CancellationToken的CancellationToken)在MongoDB的.Driver.Core.Bindings.ServerChannelSource.GetChannel(的CancellationToken的CancellationToken)在MongoDB.Driver.Core.Bindings.ChannelSourceHandle.GetChannel(的CancellationToken的CancellationToken)在MongoDB.Driver.Core.Operations.BulkMixedWriteOperation.Execute(IWriteBinding结合,的CancellationToken的CancellationToken)在MongoDB.Driver.OperationExecutor.ExecuteWriteOperation [TResult]在MongoDB.Driver.MongoCollectionImpl在MongoDB.Driver.MongoCollectionImpl'1.ExecuteWriteOperation [TResult](IWriteOperation`1操作,的CancellationToken的CancellationToken)(IWriteBinding结合,IWriteOperation'1操作的CancellationToken的CancellationToken) "1.BulkWrite(IEnum erable'1请求,BulkWriteOptions选项的CancellationToken的CancellationToken)在MongoDB.Driver.MongoCollectionBase'1.InsertOne(TDocument文件,InsertOneOptions选项的CancellationToken的CancellationToken)
编辑:
如果我将MaxConnectionPoolSize设置为500并将WaitQueueSize设置为2000,则会出现以下异常:
MongoConnectionException:打开与服务器的连接时发生异常.---> System.Net.Sockets.SocketException:尝试以其访问权限禁止的方式访问套接字191.235.xxx.xxx:54128
实例化MongoClient:
var client = new MongoClient(new …Run Code Online (Sandbox Code Playgroud) 根据我的理解,暂存站点需要重新启动的唯一原因是,是否存在应用程序设置或连接字符串配置为插槽设置.
虽然这似乎并非总是如此.我们的一个应用程序将重新启动.我使用了Powershell cmdlet来确保Portal中没有"隐藏"的插槽设置(因为显然这是一件事).
还有哪些其他因素可以确定在交换期间是否重新启动暂存站点?
(我在kudu GitHub存储库上发布了这个,但没有收到回复)
回应拜伦的回答:
我做了一些非常彻底的测试(请参阅我的测试报告),我可以执行插槽交换(有和没有预览),无需生产或暂存槽重新启动.这显然没有在Web Apps上配置插槽设置.
这是否意味着无法保证重启?我在这里提出的问题是,如果没有重启,IIS的应用程序初始化模块仍然确保应用程序确实已经预热(因为这些事情可能需要几分钟)?
azure-web-sites kudu azure-app-service-plans azure-web-app-service
我的理解是web.config在 Azure 应用服务上运行 ASP.NET Core Web 应用程序时需要:
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\MyProgram.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
dotnet publish -c Release不创建 this web.config,所以我创建了自己并将其放入解决方案中(奇怪,因为我以前从未这样做过)。
但我遇到的问题是它不发布web.config文件?它似乎忽略了它。
让我的应用程序在 Web App 中工作的唯一方法是web.config使用 Kudu手动将文件复制到 wwwroot 文件夹中。
注意:这是一个依赖于框架的部署 (FDD),不是独立的,并且使用 .NET Core 2。
尝试消费时收到以下响应text/plain:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.13",
"title": "Unsupported Media Type",
"status": 415,
"traceId": "|b28d0526-4ca38d2ff7036964."
}
Run Code Online (Sandbox Code Playgroud)
控制器定义:
[HttpPost]
[Consumes("text/plain")]
public async Task<IActionResult> PostTrace([FromBody]string body)
{ ... }
Run Code Online (Sandbox Code Playgroud)
HTTP 消息:
[HttpPost]
[Consumes("text/plain")]
public async Task<IActionResult> PostTrace([FromBody]string body)
{ ... }
Run Code Online (Sandbox Code Playgroud)
我能够很好地使用 JSON 或 XML。我错过了什么?
那么,为什么LINQ不被认为是纯粹的功能呢?
是因为副作用会发生吗?或者是因为它存在于一个命令式的环境中?
并行化以下代码的正确语法是什么?
static void Main(string[] args)
{
Task.Factory.StartNew(
() =>
doOne(SelectedTask.option1)
.ContinueWith(
task =>
doOne(SelectedTask.option1)).Wait()
);
}
Run Code Online (Sandbox Code Playgroud)
与enum"selectedTask" 相同的方法来决定执行哪些代码:
static enum SelectedTask
{
option1,
option2
}
static void doOne(SelectedTask Lunch)
{
switch (lunch)
{
case SelectedTask.option1:
Console.WriteLine("option1");
break;
case SelectedTask.option2:
Console.WriteLine("option2");
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud) 据我所知,这些是唯一可用于浏览Azure表存储,队列和Blob的客户端:
那里有其他客户我不知道吗?
azure azure-storage azure-storage-blobs azure-table-storage azure-queues
asp.net-core ×3
azure ×3
c# ×3
.net ×2
.net-core ×1
asp.net ×1
azure-queues ×1
dnx ×1
graphhopper ×1
kudu ×1
lambda ×1
linq ×1
mongodb ×1