似乎有很多令人困惑的,有时是冲突的信息,关于使.net HTTPListener https能够.我的理解如下:
一个人的c#代码需要一个https
前缀(例如https://*:8443
),以便监听器理解它需要在此端口上为SSL请求提供服务.
实际的SSL握手发生在幕后并由http.sys
(安装在Windows机器上的某处)进行处理; C#代码不必显式管理ssl握手,因为它发生在封面下.
需要在计算机上安装"x509可信证书" httpListener
,并且某种程度上证书需要绑定到端口8443(在此示例中)
我的理解是否正确?如果没有,请教育我.
关于x509证书,我的理解是:
makecert
创建X509证书.此证书存储在个人存储中,需要转移到可信存储(这是http侦听器所在的位置).似乎我可以certMgr
用来执行移动,或者我可以mmc
用来实现移动.似乎还有超过1 X509证书格式(DER
,Base64
,pks
,PSWD保护pks
私有等)..有,我应该使用首选格式?一旦我将证书带入可信商店,我就需要将它绑定到tcp端口.我在Win7上:我应该使用httpcfg
还是netsh
?
任何提示/建议将不胜感激.
我想知道C#程序中AssemblyInfo.cs中的GUID是什么:
[assembly: Guid("a4df9f47-b2d9-49a9-b237-09220857c051")]
评论说它适用于COM对象,但为什么它们需要GUID?GUID可以外部访问吗?
因此,如果它只适用于COM,那么在设置时是否需要GUID [assembly: ComVisible(false)]
?
我正在针对C++ COM服务器实现ac#COM客户端.当我将COM接口标记为"Dual"时,COM客户端正常运行,但是当我删除"Dual"属性时,它会抛出InvalidCastException.
因此,对我来说简单的方法是将其标记为Dual.但是从在线阅读来看,它似乎不是推荐的COM服务器使用方法.任何人都可以向我解释将界面标记为双重以及为什么不推荐它的重要性(以外行的术语)?
我只需要它用于测试目的,我正在使用C#客户端(不要以为我会使用VB)
或者,任何人都可以指出我为非双接口创建C#COM客户端的良好演练(MSDN上的示例都是双接口)谢谢!
我有一个 C# 程序集,用作非托管 C++ 应用程序使用的进程内 COM 服务器。该程序集使用永远不会更改的 Web 服务,因此无需更新 Web 服务代理类。这就是为什么代理类被创建一次,Reference.cs
文件被简单地放入存储库中并仅从那里进行编译。
问题是默认情况下 Web 服务代理类是公共的,因此暴露给 COM。这会导致类型库膨胀并污染注册表。将可见性更改为内部会破坏程序集,因此这些实体需要保持公共状态,但不需要暴露给 COM。
愚蠢的方法是接近文件中的每个公共接口/类Reference.cs
并将其标记为
[System.Runtime.InteropServices.ComVisible(false)]
Run Code Online (Sandbox Code Playgroud)
此后,它不再暴露于 COM。
有没有更好的办法?