WCF在https类型的网站中,web.config文件的配置方法。

wcf: 分为服务器端和客户端两部分  ,这两部分工作流程如下:

  1 服务器端创建wcf服务器

  2 将服务端通过 EndPoint端点 与客户端通信

  3 在使用客户端时,创建一个代理服务,然后再客户端使用这个代理服务

 

 EndPoint 端点 也成为服务的ABC

  A: address :代表服务地址 , a的作用是让客户端知道从哪调wcf服务

 B :binding : 代表数据的绑定类型,不同的绑定类型对应不同的服务调用方式   b的用是让客户端知道如何调用wcf服务

 C:contract :代表服务契约, 契约是调用服务是必须遵守的规格。契约的作用是让客户端知道 服务器端提供什么服务。

 

wcf 定义4种类型的契约

  service constract

 data constract

message constract

fault contract

 

wcf 数据的绑定类型

  Peer network binding:使用p2p网络进行通信,这种绑定的类型使用率较高

tcp binding : 使用tcp在互联网进行跨机器通信

 basic binding:用来对以前 asmx web service 提供支持 这样是既有的客户端程序可以连接到wcf服务,wcf客户端也可以使用web service 服务

ipc binding: 在同一主机上使用命名通道进行通信,拥有极高的安全保护能力,不接受任何本机以调用

web service binding: 使用http,https 在互联网上进行通信,这种绑定类型支持 可靠行 事务性 安全性等功能。

federated ws binding:专用的ws-federated 绑定协议

duplex ws binding :支持服务端客户端之间的双向通信

msmq binding:支持离线消息队列的调用

msmq integration binding:在wcf消息和msmq 消息直接转换。

 

 

 

开始发布用的默认 配置如下,项目运行是成功

1

 <system.serviceModel>
   <behaviors>
    <serviceBehaviors>
     <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
     </behavior>
    </serviceBehaviors>
   </behaviors>
   <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

2:

 <system.serviceModel>
   <services>
    <service behaviorConfiguration="" name="d">
     <endpoint address="localhost" binding="wsHttpBinding" bindingConfiguration="TransportSecurity"  contract="">
     </endpoint>
    </service>
   </services>
   <bindings>
    <wsHttpBinding>
     <binding name="TransportSecurity">
      <security mode="Transport">
       <transport clientCredentialType="None" />
      </security>
     </binding>
    </wsHttpBinding>
   </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
   <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

 

关键是加粗的两行。

<system.serviceModel>
  <behaviors>
   <serviceBehaviors>
    <behavior name="BOAutoApprovalWCFBehavior">  //---name=服务的名称  默认为空 自动获取
     <serviceMetadata httpsGetEnabled="true" />
     <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
   </serviceBehaviors>
  </behaviors>
  <services>
   <service behaviorConfiguration="BOAutoApprovalWCFBehavior" name="BOAutoApprovalWCF">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="TransportSecurity"
     contract="IBOAutoApprovalWCF">
     <identity>
      <dns value="localhost" />
     </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
   </service>
  </services>
   <bindings>
     <wsHttpBinding>
       <binding name="TransportSecurity">
         <security mode="Transport">
           <transport clientCredentialType="None" />
         </security>
       </binding>
     </wsHttpBinding>
   </bindings>
 </system.serviceModel>

 

不明白service 配置:

 <service behaviorConfiguration="BOAutoApprovalWCFBehavior" name="BOAutoApprovalWCF">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="TransportSecurity"
     contract="IBOAutoApprovalWCF">
     <identity>
      <dns value="localhost" />
     </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
   </service>
  </services>

当配置出错时:

 

 

 <service behaviorConfiguration="" name="d"> 

解析:

behaviorConfiguration: 服务行为  可以为空

name : 必须有值

contract:可以为空

 

  <endpoint address="localhost" binding="wsHttpBinding" bindingConfiguration="TransportSecurity"  contract="">

bindingConfiguration: 对应  :<binding name="TransportSecurity">

address:服务地址, 默认为kong,可以是: localhost

binding:数据的绑定类型

contract :代表服务契约,可以为kong .

 

 <serviceMetadata httpGetEnabled="true" />就表示,服务里要提供基于http协议的元数据交换功能

 

 

 

WCF中容易出现的错误:在服务“Service1”实现的协定列表中找不到协定名称

出错的原因有两个:

1. 看契约是否写对, 这个一般不会写错

2.看配置文件:service name="空间名+服务名称"    endpoint contract="空间名+契约名称"

(这里有个小细节要注意, ""中不能出现空格,否则依然报错)

 

 

服务名称: 对应  <behavior name="Service1">

                        name属性的值可以随意赋值

   <behaviors>
      <serviceBehaviors>
        <behavior name="Service1">
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

 

   <serviceBehaviors>
        <behavior name="d">
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>

契约名称:对应接口契约名称:  [ServiceContract(Name ="IService1")]

   [ServiceContract(Name ="IService1")]
    public interface IService1
    {
        [OperationContract(Name="doWork")]
        string  DoWork(string name);

}

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WCF 接收 `uni.uploadFile` 文件,你可以按照以下步骤进行操作: 1. 首先,在 WCF 服务的契约定义一个操作合同,用于接收文件。例如: ```csharp [ServiceContract] public interface IFileService { [OperationContract] void UploadFile(Stream fileData); } ``` 2. 在服务实现类,实现该操作合同。在方法,你可以使用 `Stream` 类型的参数接收文件数据。例如: ```csharp public class FileService : IFileService { public void UploadFile(Stream fileData) { // 处理文件数据 // 可以使用流操作、保存到磁盘、或者进行其他自定义操作 } } ``` 3. 在服务的配置文件配置绑定和终结点。你可以使用基于 HTTP 的绑定,如 `basicHttpBinding` 或 `webHttpBinding`。例如: ```xml <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IFileService" /> </basicHttpBinding> </bindings> <services> <service name="YourNamespace.FileService"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IFileService" contract="YourNamespace.IFileService" /> </service> </services> </system.serviceModel> ``` 4. 在客户端调用代码,引用服务契约并创建代理对象。然后,可以使用代理对象调用 `UploadFile` 方法并传递文件数据。例如: ```csharp using (var client = new FileServiceClient()) { using (var fileStream = File.OpenRead("path/to/file")) { client.UploadFile(fileStream); } } ``` 这样,你就可以在 WCF 成功接收 `uni.uploadFile` 的文件数据。记得根据实际需求进行适当的异常处理和文件操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值