介绍和目标

当我们谈论WCF安全性时,有两种方式:传输级安全性和消息级安全性。 传输级安全性只不过是协议的内置安全性。 在消息层级的安全性方面,我们需要对数据进行加密,换句话说,安全性被注入数据本身。 在本文中,我们将研究如何使用WsHttp绑定实现传输级安全性。 我们不需要为运输级别的安全性做更多的开发,因为它更多的是协议固有的安全模型。 在本文中,我们将实现使用HTTPS作为传输安全性的WsHttp。

我在WCF,WPF,WWF,SharePoint,设计模式,UML等方面收集了大约400个FAQ问题和答案。请随时从我的网站下载这些FAQ PDF: http : //www.questpond.com

步骤1:使用WCF项目创建一个简单的服务

第一步是创建一个简单的WCF项目。 所以点击新建项目并选择WCF服务项目。 默认情况下,WCF项目创建一个默认功能 GetData() 我们将使用与此样本相同的功能。

public class Service1 : IService1
    public string GetData(int value)
        return string.Format("You entered: {0}", value);
    public CompositeType GetDataUsingDataContract(CompositeType composite)
        if (composite.BoolValue)
            composite.StringValue += "Suffix";
        return composite;
 

步骤2:在服务的web.config文件中启用传输级安全性

下一步是在WsHttp绑定中启用传输安全性。这是使用“安全”XML标签完成的,如以下代码片段所示:

<bindings>
<wsHttpBinding>
<binding name="TransportSecurity">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>

步骤3:绑定绑定并指定HTTPS配置

我们现在需要绑定端点。所以使用该bindingConfiguration标签来指定绑定名称。我们还需要指定服务所在的地址。请注意地址标签中的HTTS。

更改mexHttpBindingmexHttpsBinding第二个终点。

<service name="WCFWSHttps.Service1" behaviorConfiguration="WCFWSHttps.Service1Behavior">
<!-- Service Endpoints -->
<endpoint address="https://localhost/WCFWSHttps/Service1.svc" binding="wsHttpBinding" 
   bindingConfiguration="TransportSecurity" contract="WCFWSHttps.IService1"/>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
</service>

serviceMetadata,我们也需要改变httpGetEnabledhttpsGetEnabled

<serviceBehaviors>
........
.........
<serviceMetadata httpsGetEnabled="true"/>
.........
.........
</serviceBehaviors>

步骤4:启用Web应用程序HTTPS

现在我们完成了WCF服务项目创建和必要的配置更改,现在是编译WCF服务项目并将其托管在启用了HTTPS的IIS应用程序中的时候了。

我们将使用makecert.exe这是Microsoft的免费工具,以启用HTTPS进行测试。MakeCert(Makecert.exe)是一个命令行工具,用于创建由系统测试根键或另一个指定键签名的X.509证书。证书将证书名称绑定到密钥对的公共部分。证书保存到文件,系统证书存储或两者兼容。

您可以从C:\ Program Files \ Microsoft Visual Studio 8 \ Common7 \ Tools \ Bin获得相同的权限,也可以从Windows SDK获取。

您可以在“ C:\ Program Files \ Microsoft Visual Studio 8 \ Common7 \ Tools \ Bin ”的DOS提示符下键入以下内容请注意,“ compaq-jzp37md0 ”是服务器名称,因此您需要将其替换为PC名称。

makecert -r -pe -n "CN= compaq-jzp37md0 " -b 01/01/2000 -e 01/01/2050 -eku 1.3.6.1.5.5.7.3.1 
  -ss my -sr localMachine -sky exchange -sp 
  "Microsoft RSA SChannel Cryptographic Provider" -sy 12

如果您通过命令提示符运行该命令,您应该获得如下所示的成功消息:

现在是时候将此证书分配给您的IIS网站。所以去IIS属性,点击目录安全选项卡,你应该看到服务器证书按钮。

单击服务器证书按钮,然后您将走过IIS证书向导。单击向导中的“分配现有证书”。

您可以看到证书列表。“ compaq-jzp37md0 ”证书是我们刚刚使用' makecert.exe ' 创建的证书

现在尝试测试网站没有'HTTPS',你会得到如下所示的错误...这意味着你的证书正在工作。

不要忘记启用IIS匿名访问。

步骤5:在Web应用程序中使用服务

现在是在ASP.NET网络中使用服务应用程序的时候了。所以点击添加服务参考并指定您的服务URL。您将看到如下图所示的警告框。当我们使用makecert.exe时,我们没有将主机名指定为服务URL。所以只要让它走了

步骤6:禁止HTTPS错误

makecert.exe '创建测试证书。换句话说,它不是由CA签署的。所以我们需要在ASP.NET客户端消费者中抑制这些错误。我们创建了一个函数IgnoreCertificateErrorHandler,即使有错误也返回true。此函数作为回调附加ServicePointManager.ServerCertificateValidationCallback

在相同的代码中,您还可以看到调用该GetData函数的服务消耗代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebApplicationConsumer.ServiceReference1;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
namespace WebApplicationConsumer
public partial class _Default : System.Web.UI.Page
    protected void Page_Load(object sender, EventArgs e)
        ServicePointManager.ServerCertificateValidationCallback = 
          new RemoteCertificateValidationCallback(IgnoreCertificateErrorHandler); 
        Service1Client obj = new Service1Client();
        Response.Write(obj.GetData(12));
    public static bool IgnoreCertificateErrorHandler(object sender, 
      X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        return true;
 

步骤7:享受成功

现在到最简单的步骤,编译您的ASP.NET客户端并享受成功。

我还附上了包含客户端和服务源代码

原文:点击打开链接目录介绍和目标步骤1:使用WCF项目创建一个简单的服务步骤2:在服务的web.config文件中启用传输级安全性步骤3:绑定绑定并指定HTTPS配置步骤4:启用Web应用程序HTTPS步骤5:在Web应用程序中使用服务步骤6:禁止HTTPS错误步骤7:享受成功源代码介绍和目标当我们谈论WCF安全性时,有两种方式:传输级安全性和消息级安全性。传输级安 的工具生成加密证书。 MakeCert.exe -sr localmachine -ss My -n CN=localhost,OU=https://localhost -sky exchange -pe -r localhost.cer 2,查看生成好的加密证书的『Thumbprint has... 选中iis 左侧网站,某一个webside, 去掉web.config 中 system.serviceModel/services/service endpoint指定是http 协议, 修改web.config 添加rewrite pattern, 同时要在iis 添加 url 重定向功能, 安装 url rewrite module <system.webServe.
昨天需要把做好的一个wcf服务发布到服务器站点下的一个虚拟目录中发布过程遇到了一个问题:服务器上的环境是https,因此需要多对配置文件修改于是在网上找啊找,遇到一个问题找一个问题,可是问题依然没解决。我在网上找到了一篇文章一步步照着上面写的做。 http://www.codeproject.com/KB/WCF/7stepsWCF.aspxhttp://www.codeproject.com/...
基于Mediapipe的手势识别前端应用可执行程序+说明.zip # 项目简介 * 基于AutoHotkey制作的摄像头手势识别软件。能让你的电脑摄像头在识别手势后,执行自定义的电脑操作命令。同时也集成了语音识别功能,可调用Windows自带API实现简单的语音助手功能。 * 手势识别调用了高性能的Mediapipe动态链接库来免部署实现。而电脑自动化操作使用AutoHotkey脚本语言来实现,它能更方便的对电脑进行深度调用和流程自动化处理。 # 使用介绍 * 测试环境:Win10 64位(专业版完整镜像) * **第一次运行 Visual_Gesture_Recognition.exe**时,会提示下载手势识别的**依赖包**。点击**确定**后,跟着提示**点击自动下载**
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。 python烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zip 1. 在 Visual Studio 中创建一个新项目,选择“WCF Service Application”模板。 2. 在默认的 IService1.cs 文件中,定义您的服务契约,例如: [ServiceContract] public interface IMyService [OperationContract] string GetData(int value); 3. 在默认的 Service1.cs 文件中,实现您的服务契约,例如: public class MyService : IMyService public string GetData(int value) return string.Format("You entered: {0}", value); 4. 在 Web.config 文件中,配置您的终结点,例如: <services> <service name="MyNamespace.MyService"> <endpoint address="" binding="basicHttpBinding" contract="MyNamespace.IMyService" /> </service> </services> 5. 在 Visual Studio 中,右键单击项目,选择“发布”,并按照向导完成发布过程。 完成后,您的 WCF 服务将已经成功创建和发布。