小编Vas*_*nko的帖子

IAsyncStateMachine.SetStateMachine的目的是什么?

接口IAsyncStateMachine只能由编译器使用,并用于为异步方法生成状态机.接口有SetMachineState- 使用堆分配的副本(来自msdn)配置状态机.

我曾经ILSpy反编译代码并发现生成的状态机,并提到SetMachineState函数的实现总是空的,就像这样

[CompilerGenerated]
private sealed class <GetResult>d__1 : IAsyncStateMachine
{
    //some fields to hold state

    void IAsyncStateMachine.MoveNext()
    { ... }

    [DebuggerHidden]
    void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine stateMachine)
    {
        //Method is empty
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一件事,生成的状态机class并不是struct随处可见的.

那么,问题是:接口SetStateMachine功能的目的是什么IAsyncStateMachine,它在哪里使用?

原始异步功能:

private static async Task<int> GetResult()
{
    var task = GetSomeData();
    DoSomeWork();
    return await task;
}
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous state-machine async-await

11
推荐指数
1
解决办法
1304
查看次数

将SOAP/REST客户端从TLS 1.0迁移到TLS 1.2

面临下一个问题:

我在.net web应用程序下运行.NET Framework 4.5.2.应用程序使用以下方式与SalesForce通信:

SalesForce于2017年3月4日宣布禁用TLS 1.0加密协议.我是否需要进行一些调整才能迁移到TLS 1.2?

System.Net.ServicePointManager.SecurityProtocol.NET 4.5中的默认值是SecurityProtocolType.Tls|SecurityProtocolType.Ssl3,.NET 4.5最多支持TLS 1.2

我需要更新System.Net.ServicePointManager.SecurityProtocol吗?如果是这样,它是否会影响与其他api的通信?

我将不胜感激任何帮助.

ssl https soap-client

10
推荐指数
1
解决办法
5804
查看次数

System.Data.Sqlite 1.0.99 guid比较不起作用

我正在使用C#的System.Data.Sqlite 1.0.99,你可以用EF调用db.我面临选择的问题时FirstOrDefault通过Guid它回到null(但这样的GUID在数据库中存在行):

var user = context.Users.FirstOrDefault(x => x.Id == userId); //returns null
//or
var user = context.Users.Where(x => x.Id == userId).ToArray(); //returns empty array
Run Code Online (Sandbox Code Playgroud)

找到一些已知问题的信息,它已在1.0.95修复,但在1.0.97和下两个解决方案中又被破坏:

解决方案1:将连接字符串上的BinaryGUID属性设置为true:

Data Source=...;BinaryGUID=True;
Run Code Online (Sandbox Code Playgroud)

解决方案2:设置下一个环境变量(在建立连接之前):

   Environment.SetEnvironmentVariable("AppendManifestToken_SQLiteProviderManifest", ";BinaryGUID=True;");
Run Code Online (Sandbox Code Playgroud)

解决方案2有效,因为(来自sqlite站点):

AppendManifestToken_SQLiteProviderManifest - 如果将此环境变量设置为[to anything],System.Data.SQLite.Linq.SQLiteProviderManifest类(以及System.Data.SQLite.EF6.SQLiteProviderManifest类)将使用它来修改将来的提供程序清单标记.将环境变量的值附加到现有提供程序清单标记(如果有).通常,为了使构造的提供者清单标记在语法上正确,环境变量值[要附加]必须以分号开头.

解决方案1对我不起作用,因为据我所知,它仅对System.Data.SQLite.Linq.SQLiteProviderManifest有影响.

问题:是否有任何解决方案可以解决此问题而不是设置环境变量?

c# sqlite entity-framework guid

9
推荐指数
1
解决办法
597
查看次数

Azure Service Fabric VMExtensionProvisioningError

我正在尝试从Azure门户创建安全的服务结构集群,并将主证书上载到密钥保管库.

正在创建所有必需的资源.虚拟机规模集,操作Write VirtualMachineScaleSets报告发生异常:

 "properties": {
        "statusCode": "Conflict",
        "statusMessage": "{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceDeploymentFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"VMExtensionProvisioningError\",\"message\":\"VM has reported a failure when processing extension 'VMDiagnosticsVmExt_vmNodeType0Name'. Error message: \\\"Monitoring Agent not reporting success after launch\\\".\"}]}}"
    }
Run Code Online (Sandbox Code Playgroud)

因为内部操作Write Deployments失败,并且没有详细消息.

azure azure-service-fabric

9
推荐指数
0
解决办法
574
查看次数

MassTransit 与 RabbitMQ:消息重复数据删除

我在传输层使用MassTransitwith RabbitMQ,并且面临消息重复数据删除的需要。

如果重复的消息已经排队(即使该消息正在由消费者处理),则应跳过向队列添加新消息。例如,可以通过消息内容来识别重复项。

发送DoWork1, DoWork2, DoWork3可以并行处理,但发送DoWork1, DoWork2, DoWork2- 重复应该被跳过,并且只要DoWork1, DoWork2处理过的相同消息可以排队并且不应该被认为是重复的。

解决方案1:在交换层使用“ RabbitMQ Message Deduplication Plugin ”,对我来说很理想,但不确定是否解决了描述的问题。

解决方案2:使用第三方数据存储实现自定义中间件。

对于所描述的问题,有没有更好的解决方案?

提前感谢您的帮助!

messaging masstransit rabbitmq

4
推荐指数
1
解决办法
3917
查看次数

哈希码是否存储在SyncBlockIndex / SyncBlock中

.net中的每个对象都有标题(SyncBlockIndexMethodTablePointer),如果没有链接到该对象的SyncBlock GetHashCode()SyncBlockIndex则在您调用该结果时可以将其保存在其中,如果有,则可以将其保存在SyncBlock中。

当我们不重写GetHashCode方法时,哈希码是对象存在期间的保存,但是如果我们返回动态哈希码(取决于对象的状态),哈希码将如何存储?

我知道哈希码在对象存在期间应该是相同的,提出问题的目的是了解哈希码如何存储在SyncBlockIndex或SyncBlock中。

.net c# gethashcode

3
推荐指数
1
解决办法
158
查看次数

Azure搜索-在“包含”一词中查找匹配项

我使用Azure搜索,而Azure搜索又使用Lucene。有什么方法可以使搜索不那么严格。我需要的是在搜索“ term ”时应将文档与包含“ term ”的术语匹配。

狐狸搜索字词应与“前缀字词 ”,“ 字词后缀”,“前缀字词后缀” 匹配

狐狸的第2 部分应该与“第1部分第2 部分 ”,“第2 部分第3部分”,“第1 部分第2部分第3部分”匹配

我需要运行具有多个术语的搜索查询,例如

"term part2"
Run Code Online (Sandbox Code Playgroud)

匹配如下文件:

{ someField:"... PrefixTermSuffix ... part1part2part3 ..." }
{ someField:"... PrefixTerm ... part2part3 ..." }
etc
Run Code Online (Sandbox Code Playgroud)

lucene search-engine azure azure-cognitive-search

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

Azure 应用程序网关后面的 WordPress 中的重定向循环

我有example.com指向 Azure 应用程序网关的域

在应用程序网关中,我使用基于 url 的路由,将流量路由到 Azure 应用服务 ( blog.azurewebsites.net) 和 ssl 终止。

应用服务,这是 WordPress 站点,WP_SITEURLWP_HOME设置为“ example.com”。

现在,如果我去:

https://example.com/post/- 效果很好

https://example.com/index.php- 效果很好

https://example.com-发生重定向循环

wordpress azure azure-application-gateway

0
推荐指数
1
解决办法
2149
查看次数