小编Ste*_*ser的帖子

在C#中使用带有COM互操作的ref Array参数

我有一个第三方COM库,我正在消耗,并且我遇到了数组参数问题.

我正在调用的方法签名如下:

int GetItems(ref System.Array theArray)
Run Code Online (Sandbox Code Playgroud)

文档说该方法的返回值是它将填充到数组中的项目数,但是当它被调用时,数组中的所有值都只是默认值(它们是结构体),即使该方法返回非零回报值.

我知道这里有一些时髦的COM互操作,但我真的没有多少经验,也无法搞清楚.这就是我试图访问它的方式:

Array items = Array.CreateInstance(typeof(structItem), 100);
int numberOfItems = instance.GetItems(items);

Array items = Array.CreateInstance(typeof(structItem), 100);
int numberOfItems = instance.GetItems(ref items);

structItem[] items = new structItem[100];
int numberOfItems = instance.GetItems(items);

structItem[] items = new structItem[100];
int numberOfItems = instance.GetItems(ref items);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

更新:我认为它可能与SafeArrays有关,如下所述:http://www.west-wind.com/Weblog/posts/464427.aspx 区别在于我应该传入数组ref,不只是处理返回值.本文的具体解决方案不起作用,但我觉得我变暖了.

c# com interop com-interop

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

在没有序列号的情况下清理 Azure 服务总线上的延迟消息

如果我丢失了序列号,有什么方法可以恢复或删除 Azure 服务总线上的延迟消息?

场景是:我想BrokeredMessage.Defer()用来延迟一条消息。我计划记录序列号,稍后使用它来检索消息。但是,如果出现问题——假设部署了一些有问题的代码——并且序列号没有正确记录,那么该消息似乎会以延迟状态放置在服务总线上,直到消息过期,这可能是永远的。

这主要是因为该消息将占用队列或订阅上的空间,而且我还没有找到任何方法来恢复该空间,除非完全删除队列/订阅。

没有办法接收或删除“丢失”的延迟消息?

azure azureservicebus

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

允许 SQL Server 唯一约束中的尾随空格差异

我有一个表,其中有一列具有唯一约束。我的数据具有有意义的尾随空格,因此'foo''foo '是有意义的不同。但是,如果我尝试为每个值添加一行,则会违反该列的唯一约束。

如果该列是主键,我会收到以下错误:

违反主键约束“PK_Foo”。无法在对象“dbo.Foo”中插入重复的键。重复的键值为 (foo )。

如果该列具有唯一约束,我会收到此错误:

无法在具有唯一索引“IX_Foo”的对象“dbo.Foo”中插入重复的键行。重复的键值为 (foo )。

下面是我想传递的脚本。

SET ANSI_PADDING ON  -- this has no effect, I've included it to preempt the suggestion
GO

CREATE TABLE [dbo].[Foo](
    [Bar] [varchar](50) NOT NULL,
    [Baz] [varchar](50) NOT NULL,
 CONSTRAINT [PK_Foo] PRIMARY KEY CLUSTERED 
(
    [Bar] ASC
)
) ON [PRIMARY]

GO

CREATE UNIQUE NONCLUSTERED INDEX [IX_Foo] ON [dbo].[Foo]
(
    [Baz] ASC
)
GO

INSERT INTO [dbo].[Foo] (Bar, Baz) VALUES ('foo', '1')
INSERT INTO [dbo].[Foo] (Bar, Baz) …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

5
推荐指数
0
解决办法
569
查看次数

如何从Progress数据库中获取ROWID

我有一个Progress数据库,我正在执行ETL.我正在读取的其中一个表没有唯一的密钥,因此我需要访问ROWID以便能够唯一地标识该行.访问正在进行的ROWID的语法是什么?

我知道使用ROWID进行行识别存在问题,但这就是我现在所拥有的.

database progress-4gl progress-db

4
推荐指数
2
解决办法
5932
查看次数

如何删除ActiveMQ中的所有主题?

我正在将ActiveMQ与C#客户端库一起使用.我创建了10,000个随机名称的主题作为评估目的的测试的一部分,现在我无法摆脱这些主题.ActiveMQ因为这个主题而陷入停顿,所以我需要它们离开系统.这是我到目前为止所尝试过的,但没有一个有效.我正在运行ActiveMQ作为Windows服务.

  • 删除ACTIVEMQ_HOME\Data中的所有文件和文件夹
  • 关闭所有持久性
  • 删除持久性文件夹中的所有文件和文件夹
  • 删除整个ACTIVEMQ_HOME目录并将其重新安装在其他文件夹中

我已经跟踪了文件活动,找不到创建或删除主题时写入的任何文件.

我意识到.NET客户端库对功能有点了解,所以我甚至无法以编程方式获得所有主题的列表.

activemq-classic

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

正文已被CloudFront拒绝的AWS GET请求

我正在使用AWS SAM(Lambda和API网关)构建API,该合同的合同由第三方定义。

第三方使用主体中包含JSON的GET请求调用我的API。但是,将请求与正文发送到API时,CloudFront会拒绝该请求。

这是请求:

curl -X GET -H "Content-Type: application/json" --data '{"hello":"world"}' https://my-api.execute-api.us-east-2.amazonaws.com/Prod/my-api
Run Code Online (Sandbox Code Playgroud)

这是响应:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
    <HEAD>
        <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
        <TITLE>ERROR: The request could not be satisfied</TITLE>
    </HEAD>
    <BODY>
        <H1>403 ERROR</H1>
        <H2>The request could not be satisfied.</H2>
        <HR noshade size="1px">
Bad request.


        <BR clear="all">
        <HR noshade size="1px">
        <PRE>
Generated by cloudfront (CloudFront)
Request ID: 1p0St_-e3noQL-2uMxeB_2I6lkMr1mg5afvxJRmVpCdnG67Vgnhj9w==
</PRE>
        <ADDRESS></ADDRESS>
    </BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)

检查日志后,该请求不会命中API网关或Lambda函数。但是,如果我从请求中删除主体,则它将触发Lambda函数,并且会从API中获得相应的错误消息(告诉调用方期望的主体丢失了。)

curl -X GET -H "Content-Type: application/json" https://my-api.execute-api.us-east-2.amazonaws.com/Prod/my-api
Run Code Online (Sandbox Code Playgroud)

我正在通过SAM模板使用API​​网关的基本配置。这是相关的部分:

MyApiFunction:
  Type: AWS::Serverless::Function
  Properties: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudfront aws-lambda aws-api-gateway

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