我是WCF的新手,我创建了一个服务,通过使用basicHttpBinding的Windows移动应用程序来消费.我现在正在研究如何实现加密和认证,我并没有走得太远.
我已将以下内容添加到我的服务器端服务配置中(我认为是正确的):
<basicHttpBinding>
<binding name="SecurityByTransport">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
<transport clientCredentialType="Certificate" />
</security>
</binding>
</basicHttpBinding>
Run Code Online (Sandbox Code Playgroud)
现在,在我的IIS实例上安装临时证书后,我可以通过https导航到我的服务.
此时我使用内置工具的视觉工作室来运行svcutil.exe并生成我的代理,它连接得很好.
我遇到的问题是在客户端配置中,端点引用是使用http而不是https.如果我改变了这个,我会收到以下错误:
The provided URI scheme 'https' is invalid; expected 'http'.
Run Code Online (Sandbox Code Playgroud)
这显然我不想要.
同样在我的客户端配置中,指定的安全性似乎是"无",这是对的吗?
我正在寻找一个命令,它将接受多行文本作为输入,每行包含一个整数,并输出这些整数的总和.
作为一个背景,我有一个日志文件,其中包括时序测量,所以通过grepping相关的行,并稍微sed重新格式化,我可以列出该文件中的所有时间.然而,我想计算出总数,而且我的思绪已经变得空白,因为任何命令我都可以将这个中间输出传递到最终总和.我过去总是使用expr它,但除非它运行在sed我认为它不会应付这个(即使那样它也会很棘手).
我错过了什么?鉴于可能有多种方法可以实现这一点,我将很乐意阅读(和expr)任何有效的方法,即使其他人已经发布了一个不同的解决方案来完成这项工作.
相关问题:在Unix上计算一列输出总和的最短命令?(来自@Andrew)
更新:哇,正如所料,这里有一些不错的答案.看起来我一定要进行sed更深入的检查expr!
考虑这个例子(典型的OOP书籍):
我有一个Animal班级,每个人都Animal可以有很多朋友.
和子类一样Dog,Duck,Mouse等它添加特定的行为一样bark(),quack()等等.
这是Animal班级:
public class Animal {
private Map<String,Animal> friends = new HashMap<>();
public void addFriend(String name, Animal animal){
friends.put(name,animal);
}
public Animal callFriend(String name){
return friends.get(name);
}
}
Run Code Online (Sandbox Code Playgroud)
这里有一些代码片段有很多类型转换:
Mouse jerry = new Mouse();
jerry.addFriend("spike", new Dog());
jerry.addFriend("quacker", new Duck());
((Dog) jerry.callFriend("spike")).bark();
((Duck) jerry.callFriend("quacker")).quack();
Run Code Online (Sandbox Code Playgroud)
有什么办法可以使用泛型来返回类型来摆脱类型转换,这样我就可以说了
jerry.callFriend("spike").bark();
jerry.callFriend("quacker").quack();
Run Code Online (Sandbox Code Playgroud)
这里有一些返回类型的初始代码作为一个从未使用过的参数传递给方法.
public<T extends Animal> T callFriend(String name, T unusedTypeObj){
return (T)friends.get(name);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在运行时找出返回类型而不使用额外的参数instanceof?或者至少通过传递类型的类而不是虚拟实例. …
我需要一个通用容器来保持其元素排序,并且可以询问它将插入新元素的位置(在哪个位置),而不实际插入它.
这样的容器是否存在于.NET库中?最好的例子是一个例子(容器按ASCII值对字符进行排序,假设unicode不存在):
sortedContainer.Add('d');
sortedContainer.Add('b');
sortedContainer.Add('g');
//container contains elements ordered like 'b' 'd' 'g'
//index --------------------------------> 0 1 2
sortedContainer.GetSortedIndex('a'); //returns 0
sortedContainer.GetSortedIndex('b'); //returns 0
sortedContainer.GetSortedIndex('c'); //returns 1
sortedContainer.GetSortedIndex('d'); //returns 1
sortedContainer.GetSortedIndex('e'); //returns 2
sortedContainer.GetSortedIndex('f'); //returns 2
sortedContainer.GetSortedIndex('g'); //returns 2
sortedContainer.GetSortedIndex('h'); //returns 3
[...]
Run Code Online (Sandbox Code Playgroud)
搜索位置应该利用元素排序的事实.
我已经发现了这个文件夹C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files并且有一些问题.
我的自动构建过程使用命令行来构建这样的东西:
devenv.exe myproj.sln /build release
Run Code Online (Sandbox Code Playgroud)
这是一个非常长的构建过程,它集成了由开发人员团队制作的组件.在发布模式下运行大约需要半小时.通常如果出现一个问题,那么很多其他依赖会出错,所以我偶尔会收到如下消息:
---------------------- Done ----------------------
Rebuild All: 18 succeeded, 6 failed, 0 skipped
Run Code Online (Sandbox Code Playgroud)
实际上,我希望一旦发现第一个错误,构建就会中止.如果有任何错误,则构建失败.我需要尽快知道这一点,而不是等着看其他所有东西都失败了.
有没有办法改变构建过程,以便一旦出现问题而不是贯穿整个事件而死亡?
我正在使用Visual Studio .Net 2003(是的,我知道它已经过时了).
我想动态生成内容,然后渲染为PDF文件.此处理将在远程托管服务器上进行,因此使用虚拟打印机等.有没有建议使用.NET库(pref C#)?
我知道我可以生成一堆PS代码并自己封装,但我更喜欢在这个阶段不那么狡猾的东西.
谢谢!
我已经接受了答案,但遗憾的是,我相信我们仍然坚持我们最初的最坏情况:CAPTCHA每个人都在购买废话的尝试.简短说明:缓存/ Web场无法跟踪命中,任何解决方法(发送非缓存的Web信标,写入统一表等)都会使网站的速度比机器人更慢.思科等可能有一些昂贵的硬件可以提供高水平的帮助,但如果每个人都可以选择CAPTCHA,那么很难证明成本是合理的.我稍后会尝试更全面的解释,以及为未来的搜索者清理它(尽管欢迎其他人尝试,因为它是社区维基).
这是关于woot.com上的包装销售情况.我是Woot Workshop的总裁,Woot是Woot的子公司,负责设计,撰写产品说明,播客,博客文章以及审核论坛.我使用CSS/HTML,我只是熟悉其他技术.我与开发人员密切合作,并在这里讨论了所有答案(以及我们已经拥有的许多其他想法).
可用性是我工作的重要组成部分,使网站令人兴奋和有趣是其余部分.这就是下面三个目标的来源.CAPTCHA损害了可用性,机器人从我们的垃圾销售中窃取了乐趣和兴奋.
对于随机垃圾销售,机器人在第二次屏幕抓取(和/或扫描我们的RSS)时数十次关闭我们的头版.他们看到的那一刻,它触发了登录程序的第二阶段,点击我想要一个,填写表格,并购买废话.
lc:在stackoverflow和其他使用此方法的站点上,它们几乎总是处理经过身份验证的(已登录)用户,因为正在尝试的任务需要这样做.
在Woot上,匿名(未登录)用户可以查看我们的主页.换句话说,砰击机器人可以是非认证的(并且除了IP地址之外基本上是不可跟踪的).
所以我们又回到了扫描IP,其中a)在这个云网络和spambot僵尸时代相当无用,以及b)因为来自一个IP地址的企业数量而吸引了太多的无辜者(更不用说与非静态IP ISP和潜在的性能命中试图跟踪这个).
哦,让人们打电话给我们将是最糟糕的情况.我们可以让他们打电话给你吗?
BradC:Ned Batchelder的方法看起来很酷,但它们的设计非常坚固,可以击败为网站构建的机器人.我们的问题是机器人是专门为打败我们的网站而构建的.其中一些方法可能会在很短的时间内工作,直到脚本编写者发展他们的机器人忽略蜜罐,屏幕刮擦附近的标签名称而不是表单ID,并使用支持javascript的浏览器控件.
lc:"当然,除非炒作是你营销计划的一部分." 是的,肯定是.当项目出现时的惊喜,以及如果你设法获得一个项目的兴奋可能与你最终得到的垃圾一样重要或更重要.任何消除先到先得的东西都不利于"赢得"垃圾的快感.
novatrust:我是一个人,欢迎我们新的机器人霸主.我们实际上提供RSSfeeds以允许第三方应用程序扫描我们的网站以获取产品信息,但不会超出主站点HTML.如果我正确地解释它,你的解决方案确实通过完全牺牲目标1来帮助目标2(性能问题),并且只是辞去机器人将购买大部分垃圾的事实.我对你的回复进行了投票,因为你的最后一段悲观情绪对我来说是准确的.这里似乎没有银弹.
其余的响应通常依赖于IP跟踪,再次,这似乎无用(使用僵尸网络/僵尸/云网络)和有害(捕获来自同一IP目的地的许多无辜者).
还有其他方法/想法吗?我的开发人员一直在说"我们只是做CAPTCHA",但我希望所有真正想要我们废话的人都会采用较少侵入性的方法.
假设您正在销售具有很高感知价值的便宜货,并且您的数量非常有限.没有人确切知道你何时会出售这件物品.超过一百万人经常来看看你卖的是什么.
你最终会得到脚本编写者和机器人试图以编程方式[a]弄清楚你卖的东西,并且[b]确保他们是第一个购买它的人.这很糟糕有两个原因:
一个看似显而易见的解决方案是为您的用户创建一些环节,以便在下订单之前跳过,但至少有三个问题:
另一种解决方案是监视IP经常发生的攻击,阻止它们进入防火墙,或以其他方式阻止它们进行排序.这可以解决2.并且防止[b],但是扫描IP的性能是巨大的,并且可能会导致比脚本编写者自己造成的更多问题.此外,云网络和spambot僵尸的可能性使IP检查相当无用.
第三个想法,迫使订单表格被加载了一段时间(比如说,半秒钟)可能会减慢快速订单的进度,但同样,脚本编写者仍然会成为第一批人,无论如何都不会对实际用户.
自从微软停止支持嵌入式Visual C++ 4.0(eVC 4)以来,它已经有一段时间了,并且它们不允许您使用带有VS 2008的Express版本的Windows Mobile SDK.现在,我很好,因为我获得了MSDN许可证通过工作(包括VS 2008专业版),但我想开展几个开源项目,并不是所有其他贡献开发人员都如此幸运.结果,他们坚持使用eVC,即使它在Vista上根本不运行.
这里有(免费!)共同点吗?一个IDE,它将构建在XP和Vista上运行的MFC(和/或.NET!)应用程序?它本身并不一定是花哨的,但它拥有的VS级别的细节越多,我认为我们都会更喜欢它.
对于廉价商品的建议也是受欢迎的,当然最好的选择是开源,特别是跨平台.我认为MS正在通过阻止这样的开发对WM OS造成严重损害.
持久化Java对象有哪些轻量级选项?
我正在寻找最简单的解决方案.我不希望任何花哨的特征只是简单的东西,与合理简单的对象(一些集合,关系和简单的继承)一起工作,并且不会给现有的代码库带来太多明显的复杂性(如果有的话).
我所知道的选项包括Hibernate和EMF这样的框架,但它们听起来(并且经验丰富)过于复杂和耗时.我喜欢开箱即用的东西,最好是文件导向而不是面向dababase,我可以把它放在我普通的旧Java对象之上.
这是一个新手问题,提前感谢任何类似教程的上下文澄清指南.