小编Web*_*ude的帖子

Visual Studio Wcf测试客户端 - 输入Int数组

我发现Visual Studio WCF测试客户端在快速测试我的WCF服务时非常有用.这是相对于Visual Studio安装目录在此位置找到的测试客户端:

\ Common7\IDE\WcfTestClient.exe

我有一些服务调用需要System.Int32 []类型的参数
我似乎无法弄清楚要为此参数输入什么值,因为我一直收到错误

'[输入的值]'不是此类型的有效值

试图输入值27我尝试了以下,但都失败了

27
{27}
新的System.Int32 [] {27}

任何人都可以帮助如何做到这一点

wcf wcftestclient visual-studio

90
推荐指数
1
解决办法
2万
查看次数

WCF - 错误/异常与消息

我们目前正在讨论是否最好通过WCF通道抛出故障,而不是传递指示服务状态或响应的消息.

故障来自WCF的内置支持,您可以使用内置的错误处理程序并做出相应的反应.然而,这会带来开销,因为在.NET中抛出异常可能会非常昂贵.

消息可以包含必要的信息,以确定服务调用发生的情况,而不会产生抛出异常的开销.但是,它确实需要几行重复代码来分析消息并确定其内容后面的操作.

我们开始创建一个可以在我们的服务中使用的通用消息对象,这就是我们想出的:

public class ReturnItemDTO<T>
{
    [DataMember]
    public bool Success { get; set; }

    [DataMember]
    public string ErrorMessage { get; set; }

    [DataMember]
    public T Item { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我的所有服务调用都返回此项,我可以一直检查"成功"属性以确定是否一切顺利.然后我在事件中有一个错误消息字符串表示出现了问题,如果需要,我还有一个包含Dto的通用项.

必须将异常信息记录到中央记录服务,而不是从服务传回.

思考?评论?想法?建议?

对我的问题进一步澄清

我与错误合同有关的一个问题是沟通业务规则.

比如,如果有人登录,并且他们的帐户被锁定,我该如何沟通呢?他们的登录显然失败了,但由于"帐户锁定"的原因导致登录失败.

我也是:

A)使用boolean,抛出Fault并锁定消息帐户

B)返回AuthenticatedDTO及相关信息

wcf exception

37
推荐指数
2
解决办法
7111
查看次数

如何处理WCF的MSMQ绑定中的消息失败

我已经创建了一个WCF服务并且正在使用netMsmqBinding绑定.

这是一个简单的服务,它将Dto传递给我的服务方法,并且不期望响应.该消息放在MSMQ中,一旦被选中插入数据库.

确保没有数据丢失的最佳方法是什么.

我尝试了以下两种方法:

  1. 抛出一个例外

    这会将消息放入死信队列中以供手动阅读.我的工作开始时我可以处理这个

  2. 在绑定上设置receiveRetryCount ="3"

    经过3次尝试 - 即时发生,这似乎将消息留在队列中,但是我的服务出错了.重新启动我的服务会重复此过程.

理想情况下,我想做以下事项:

尝试处理消息

  • 如果此操作失败,请等待5分钟以查看该消息,然后重试.
  • 如果该过程失败3次,请将消息移至死信队列.
  • 重新启动服务会将死信队列中的所有消息推回到队列中,以便可以对其进行处理.

我能做到吗?如果是这样的话?你能否指出我有关如何最好地利用WCF和MSMQ为我的给定sceneria的任何好文章.

任何帮助将非常感激.谢谢!

一些额外的信息

我在Windows XP和Windows Server 2003上使用MSMQ 3.0.不幸的是,我不能使用针对MSMQ 4.0和Vista/2008的内置有害消息支持.

.net wcf msmq

17
推荐指数
2
解决办法
1万
查看次数

Subversion与Vault

可能重复:
将repo从Vault迁移到Subversion的任何工具?

我目前正在审查从SVN迁移到SourceGear Vault的好处.有没有人得到建议或链接到两者之间的详细比较?请记住,我必须移动我当前的源代码控制系统,这对SVN有利

这是我迄今为止从我自己的调查中发现的一些信息.

我一直在两者之间进行一些时间测试,并且保险库似乎更快地执行大多数操作.时间测试使用与存储库,同一工作站客户端和同一项目相同的服务器.

时间比较

  • SVN
添加/提交12:30获取最新版本5:35标记/标记0:01分支N/A - 我不认为SVN中存在真正的分支

  • 拱顶
添加/提交4:45获取最新版本0:51标记/标记0:30分支3:23

(无法正确格式化)

我还找到了一个在线资源,比较了其他一些观点.这是我正在寻找的那种信息.

用法比较

  • Subversion只是编辑/合并/提交.Vault允许您进行编辑/合并/提交或结帐/编辑/签入.

  • Vault的外观和行为与VSS类似,这使得VSS用户的学习曲线实际上为零.

  • Vault有一个VS插件,但只有在你要以结账模式运行时它才有效.

  • Subversion拥有几乎所有可以想象的操作系统的客户端; Vault有一个用于Windows的GUI客户端和一个用于Mono的命令行客户端.

  • 两者都支持远程工作,因为它们都使用HTTP作为传输(Subversion使用扩展DAV,Vault使用SOAP).

  • Subversion安装,尤其是使用Apache,更复杂.

  • Subversion有很多第三方支持.保险柜只有几件事.

我的问题

有没有人得到建议或链接到两者之间的详细比较?

svn version-control sourcegear-vault

16
推荐指数
6
解决办法
6874
查看次数

在Blackberry上打开Flash作为Light

我是BlackBerry应用程序开发的新手,并试图制作一个简单的应用程序来打开我的闪光灯作为火炬.我知道有几个应用程序已经这样做了,但我想尝试自己做.

我已经安装了eclipse和所有必要的附加功能以使我的开发环境运行.我还成功创建了股票标准hello world应用程序.

然而,我正在努力寻找如何做到这一点.我一直在阅读API文档并开始玩FlashControl,VideoControlSnapshotControl.
然而,这些似乎没有公开这样做的方法.

我知道通过摄像机,我可以选择并打开闪光灯,这正是我想模仿的.

我到目前为止使用的代码似乎只是设置相机闪光灯强制打开是:

Player p = javax.microedition.media.Manager.createPlayer("capture://video");
p.realize();
p.start();

FlashControl flashControl = (FlashControl) p.getControl("javax.microedition.amms.control.camera.FlashControl");
flashControl.setMode(FlashControl.FORCE);
Run Code Online (Sandbox Code Playgroud)

blackberry java-me blackberry-jde

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

在.NET 4中更改了SHA1CryptoServiceProvider

我目前正在尝试将我的项目从.NET 3.5升级到.NET 4.0

一切都很顺利,所有代码都编译好,所有测试都通过了.
然后我遇到了部署到我的暂存环境的问题.
突然,我的登录不再有效.

在.NET 4中,我的SHA1哈希密码似乎有所不同.

我正在使用SHA1CryptoServiceProvider:

SHA1CryptoServiceProvidercryptoTransformSHA1 = new SHA1CryptoServiceProvider();
Run Code Online (Sandbox Code Playgroud)

为了测试我创建了一个带有2个控制台应用程序的新Visual Studio项目.
第一个针对.NET Framework 3.5,第二个针对4.0.
我在两者中都运行了完全相同的散列代码,并生成了不同的结果.

为什么会发生这种情况?我该如何解决这个问题?
我显然无法更新所有用户密码,因为我不知道它们是什么.

任何帮助将不胜感激.

代码示例

public static class SHA1Hash
{

    public static string Hash(string stringToHash)
    {
        return (Hash(stringToHash, Encoding.Default));
    }

    public static string Hash(string stringToHash, Encoding enc)
    {
        byte[] buffer = enc.GetBytes(stringToHash + stringToHash.Reverse());
        var cryptoTransformSHA1 = new SHA1CryptoServiceProvider();
        string hash = BitConverter.ToString(cryptoTransformSHA1.ComputeHash(buffer));
        return hash;
    }
}
Run Code Online (Sandbox Code Playgroud)

cryptography sha1 .net-4.0

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

WCF服务调用使用basicHttpBinding但使用netTcpBinding失败

(请阅读评论,因为我有一个修复)
嗨,

我创建了一个WCF服务,我在Windows 7上使用.net 4.0在IIS 7.5中托管.
该服务托管在http和net.tcp上.

我已经使用WcfTestClient测试了我的服务,它似乎通过basicHttp和netTcp正常工作.

但是,当我尝试通过我的ASP.NET网站使用此服务时,我在尝试通过nettcp时收到错误

我的客户端点如下所示

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="Generic_HttpBinding" sendTimeout="00:01:00" receiveTimeout="00:01:00" maxBufferPoolSize="2000000" maxReceivedMessageSize="2000000000">
      <security mode="None"/>
      <readerQuotas maxDepth="2000000" maxStringContentLength="2000000" maxArrayLength="2000000" maxBytesPerRead="2000000" maxNameTableCharCount="2000000"/>
    </binding>
  </basicHttpBinding>
  <netTcpBinding>
    <binding name="Generic_Binding" sendTimeout="00:01:00" receiveTimeout="00:01:00" maxBufferPoolSize="2000000" maxReceivedMessageSize="2000000000">
      <security mode="None"/>
      <readerQuotas maxDepth="2000000" maxStringContentLength="2000000" maxArrayLength="2000000" maxBytesPerRead="2000000" maxNameTableCharCount="2000000"/>
    </binding>
  </netTcpBinding>
</bindings>
<client>
  <endpoint name="EndPointHttp" address="http://localhost:43/Service/MyService.svc" binding="basicHttpBinding" bindingConfiguration="Generic_HttpBinding" contract="NameSpace.Services.Contracts.IService"></endpoint>
  <endpoint name="EndPoint" address="net.tcp://localhost:42/Service/MyService.svc" binding="netTcpBinding" bindingConfiguration="Generic_Binding" contract="NameSpace.Services.Contracts.IService"></endpoint>
</client>
Run Code Online (Sandbox Code Playgroud)

现在我以完全相同的方式调用服务,只需交换我的终点名称

var factory = new ChannelFactory<IService>(SuppliedEndpointName);
factory.Open();
var proxy = factory.CreateChannel();
var result …
Run Code Online (Sandbox Code Playgroud)

wcf was nettcpbinding

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