小编pc1*_*ter的帖子

如何将SSL添加到使用httplistener的.net应用程序 - 它将*不会在IIS上运行

最新的粗体编辑 我使用.net HttpListener类,但我不会在IIS上运行而且不使用ASP.net.该网站描述了使用asp.net实现SSL实际使用的代码,该网站描述了如何设置证书(尽管我不确定它是否仅适用于IIS).

类文档描述了各种类型的身份验证(基本,摘要,Windows等)---它们都没有引用SSL.它确实说如果使用HTTPS,则需要设置服务器证书.这是一个单行的属性设置,并HttpListener找出其余的?

简而言之,我需要知道如何设置证书以及如何修改代码以实现SSL.

虽然在我尝试访问HTTPS时没有出现,但我确实注意到系统事件日志中有错误 - 源是"Schannel",消息的内容是:

尝试访问SSL服务器凭据私钥时发生致命错误.加密模块返回的错误代码是0x80090016.

编辑:
到目前为止采取的步骤

  • 在C#中创建了一个适用于HTTP连接的工作HTTPListener(例如" http:// localhost:8089/foldername / "
  • 使用makecert.exe创建证书
  • 使用certmgr.exe添加了要信任的证书
  • 使用Httpcfg.exe监听测试端口上的SSL连接(例如8090)
  • 通过listener.Prefixes.Add(https:// localhost:8090/foldername / ")将端口8080添加到HTTPListener ;
  • 在浏览器中测试了HTTP客户端连接,例如(http:// localhost:8089/foldername / ")并收到正确的返回
  • 测试了一个HTTPS客户端连接,例如(http:// localhost:8090/foldername / ")在浏览器中接收"数据传输中断"(在Firefox中)
  • Visual Studio中的调试显示,当HTTPS连接启动时,接收请求的侦听器回调永远不会被命中 - 我没有看到任何可以设置断点以便先捕获其他内容的地方.
  • netstat显示侦听端口对HTTPS和HTTP都是开放的.尝试连接后,HTTPS端口会转到TIME_WAIT.
  • FiddlerHTTPAnalyzer没有捕获任何流量,我想它在这些HTTP分析工具中显示的过程中还不够

问题

  • 问题是什么?
  • 是否有一段我缺少的.Net代码(这意味着我必须在C#中做更多的事情,而不是简单地向指向HTTPS的侦听器添加前缀,这就是我所做的)
  • 在某个地方错过了配置步骤?
  • 我还可以做些什么来分析问题?
  • 系统事件日志中的错误消息是否是问题的标志?如果是这样,它将如何修复?

.net authentication encryption ssl

41
推荐指数
3
解决办法
2万
查看次数

如果可能,如何嵌入PostgreSQL?

如果可能,我有兴趣能够嵌入PostgreSQL数据库,类似于sqllite.我读过这是不可能的.我不是数据库专家,所以我想听听你的意见.

基本上我想要没有所有配置和安装的PostgreSQL.如果有可能,请告诉我如何.

database postgresql embedded-database

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

当我安装新版本的软件时,如何消除"指定的服务已存在"?

我有一个VS2008应用程序,其中包括一个服务项目(我称之为ServiceProject).我将安装项目(InstallationProject)设置为RemovePreviousVersions.此外,为InstallationProject 设置自定义操作,从ServiceProject安装,提交,回滚和卸载主输出.

有时,当我构建新版本的安装程序时,我可以安装而不会出错.通常,当我到达设置服务的位置(在安装程序中输入用户名和密码)时 - 它会因错误"指定的服务已存在"而失败.

我不知道为什么它不一致,虽然我认为可能有某种服务签名,如果服务未经修改,它可以成功删除它,但经过修改后,它无法识别服务.但是,我很少对服务进行修改,所以我怀疑是这样的.

如何在没有此错误的情况下使安装程序成功更新服务? 我的解决方法是手动进入控制面板,卸载以前的应用程序,然后运行安装程序.

installer windows-services visual-studio

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

如何选择唯一的节点

我发现这个页面描述了Muenchian方法,但我认为我错误地应用了它.

考虑到这将返回一组年龄:

/doc/class/person/descriptive[(@name='age')]/value
Run Code Online (Sandbox Code Playgroud)

1..2..2..2..3..3..4..7

但我希望每个年龄段的节点集只有一个节点.

1..2..3..4..7

这些中的每一个似乎都返回所有值,而不是唯一值:

/doc/class/person/descriptive[(@name='age')][not(value=preceding-sibling::value)]/value
/doc/class/person/descriptive[(@name='age')]/value[not(value=preceding-sibling::value)]
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

xml xslt

14
推荐指数
3
解决办法
5万
查看次数

Httplistener中的"指定的网络名称不再可用"

我已经构建了一个简单的Web服务,只使用HttpListener来接收和发送请求.有时,服务失败并显示"指定的网络名称不再可用".当我写入HttpListenerResponse的输出缓冲区时,它似乎被抛出.

这是错误:

ListenerCallback()错误:System.Net.HttpResponseStream.Write(Byte []缓冲区,Int32偏移量,Int32大小)中不再提供指定的网络名称

这是代码的罪恶部分.responseString是发送回客户端的数据:

            buffer = System.Text.Encoding.UTF8.GetBytes(responseString);

            response.ContentLength64 = buffer.Length;
            output = response.OutputStream;
            output.Write(buffer, 0, buffer.Length);
Run Code Online (Sandbox Code Playgroud)

它似乎并不总是一个巨大的缓冲区,两个例子是3,816字节和142,619字节,这些错误被抛出约30秒.我不认为我的单个客户端应用程序会重载HTTPlistener; 客户端偶尔会突发发送/接收数据,一次又一次地进行多次交换.

大多数谷歌搜索显示这是一个常见的IT问题,当出现网络问题时,会显示此错误 - 大多数帮助都是针对系统管理员诊断应用程序问题,而不是开发人员追踪错误.我的应用已经在不同的机器,网络等上进行了测试,我不认为这只是一个网络配置问题.

可能是这个问题的原因是什么?

web-services network-programming httplistener

10
推荐指数
2
解决办法
8664
查看次数

在JavaScript中有继承的"正确"方法吗?如果是这样,它是什么?

我一直在努力学习如何为现有代码添加测试 - 目前阅读阅读阅读有效使用遗留代码.我一直在尝试在JavaScript中应用一些原则,现在我正在尝试提取一个接口.

在JavaScript中搜索创建接口时,我找不到很多 - 我发现继承的内容似乎有几种不同的方式.(有些人创建自己的基类,以提供有用的方法,使其更容易进行继承,有些使用函数,有些使用原型).

什么是正确的方法?有一个简单的例子用于在JavaScript中提取界面?

javascript oop refactoring interface

9
推荐指数
3
解决办法
2072
查看次数

一个单元如何测试程序或基于事件的代码段

我从网站上的这个演示文稿和其他评论中确信我需要学习单元测试.我也意识到有很多关于单元测试的问题.每当我去考虑如何在我正在进行的应用程序中完成它时,我就会感到困惑.它是一个xulrunner应用程序,很多逻辑都是基于事件的 - 当用户点击此处时,会发生此操作.

我经常看到的测试示例是测试类 - 它们实例化一个对象,给它模拟数据,然后检查对象的属性.这对我来说很有意义 - 但是那些非面向对象的作品呢?

这家伙提到基于GUI的单元测试在大多数测试框架中都很难,也许这就是问题所在.上面链接的演示文稿提到每个测试应该只触及一个类,一次一个方法.这似乎排除了我正在努力做的事情.

所以问题是 - 一个单元如何测试程序或基于事件的代码?提供良好文档的链接,或自行解释.

另外,我还面临着一个挑战,即没有找到一个测试框架来设置测试xulrunner应用程序 - 似乎这些工具还没有开发出来.我想这比我理解概念,编写可测试代码,应用单元测试更具外围性.

unit-testing

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

为xulrunner应用程序设置BIRT报告查看器的最简单方法是什么?

我最近开始使用BIRT并开发了一个与我的xulrunner应用程序一起使用的报告.我还没想到的是我应该如何部署查看器.看起来BIRT主要针对Java应用程序,因此有关于部署J2EE,JBoss和其他技术的说明 - 我不熟悉(但我还没有用Java开发).

回顾一下有关部署BIRT和查看BIRT网站上的部署详细信息的这篇文章,我不知道该去哪里.我没想到必须为xulrunner应用程序添加一些大的Java依赖项 - 我无法使用我的xulrunner应用程序删除可执行文件,从我的应用程序调用它,并将其传递给报告文档?(或者其他比学习和使用J2EE,JBoss,tomcat更简单的东西?)

reporting xul birt xulrunner

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

Basecamp中最大的缺失功能,用于软件开发管理和协作

如果我们采用Basecamp进行错误跟踪,任务跟踪,外部文档,协作和项目管理,我们的团队可能会发现哪些功能缺乏?

我之前使用过免费版本,并认为37Signals制作出色的产品 - 但我想听听你们的缺点是什么.

collaboration project-management basecamp

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

是否必须在自定义实现中覆盖默认的成员资格提供程序的OnValidatingPassword?

我正在为我的.net应用程序实现自定义成员资格提供程序.我已经设置了最少数量的字符和非字母数字字符的配置,但它似乎无论如何都要通过密码,即使它们违反了规则.

OnValidatingPassword是一种虚方法.Microsoft示例不会覆盖该方法.

这个问题解决了同样的问题,但作者放弃了对他的问题的答案,并简单地覆盖了这个功能.这个答案表明,人们不必重写函数来使其工作.

基本功能没有做任何事情吗?当我重写OnValidatePassword,并简单地调用基类时,我的函数被命中,但它永远不会拒绝我太简单的密码.

代码示例(使用自定义CreateUser函数)

protected override void OnValidatingPassword(ValidatePasswordEventArgs e)
        {                        
             base.OnValidatingPassword(e);
        }
        //
        // MembershipProvider.CreateUser
        //
        public MembershipUser CreateUser(string username, string password, string globalIdentifier, string firstName, string lastName, 
            string birthDate, object providerUserKey, out MembershipCreateStatus status)
        {
            ValidatePasswordEventArgs args = new ValidatePasswordEventArgs(username, password, true);
            OnValidatingPassword(args);

            if (args.Cancel)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return null;
            }
Run Code Online (Sandbox Code Playgroud)

.net asp.net-membership membership-provider custom-membershipprovider

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