.net WCF:同时使用流媒体和用户名/密码身份验证

.net WCF:同时使用流媒体和用户名/密码身份验证,.net,wcf,streaming,wcf-security,.net,Wcf,Streaming,Wcf Security,我的WCF服务具有以下要求: a) 客户端从服务器请求一个作为流传输的文件。文件可能是100MB或更大。我需要流或卡盘或任何东西,以确保IIS没有加载到内存中的整个包开始发送之前。 b) 客户端将传输一个标识以标识要下载的文件。应通过提供用户名/密码对用户进行身份验证。 c) 虽然通信的用户名/密码部分需要加密,但对于我们的用例,下载文件的加密是可选的 在我的其他服务中,我返回较小的文件,我使用以下绑定: <ws2007HttpBinding> <binding nam

我的WCF服务具有以下要求: a) 客户端从服务器请求一个作为流传输的文件。文件可能是100MB或更大。我需要流或卡盘或任何东西,以确保IIS没有加载到内存中的整个包开始发送之前。 b) 客户端将传输一个标识以标识要下载的文件。应通过提供用户名/密码对用户进行身份验证。 c) 虽然通信的用户名/密码部分需要加密,但对于我们的用例,下载文件的加密是可选的

在我的其他服务中,我返回较小的文件,我使用以下绑定:

<ws2007HttpBinding>
    <binding name="ws2007HttpExtern" maxReceivedMessageSize="65536000">
      <security mode="Message">
        <message clientCredentialType="UserName" />
      </security>
    </binding>        
  </ws2007HttpBinding>
到目前为止,我正在使用Web开发服务器(用于生产IIS7)

我有两个问题。 a) 您将如何配置WCF以实现此目标? b) 如果微软的建议是好的:我做错了什么,错误信息并不能真正帮助我


谢谢。

此错误通常与在IIS 7上托管WCF服务有关。默认情况下不支持WCF,因此这里有一些您可以执行的疑难解答

  • 您是否已在IIS 7上托管了其他WCF服务?您可能需要研究在IIS 7服务器上添加WAS服务功能。这是一个很好的教程

  • Https要求您使用正确的SSL证书设置IIS,并向站点添加Https绑定。就是这样

  • 据我所知,微软提出的解决方案是有效的。我用了同样的方法,效果很好

    <bindings>
      <basicHttpBinding>
        <binding name="basicStreaming" 
          messageEncoding="Mtom" transferMode="StreamedResponse">
          <security mode="Transport">
            <transport clientCredentialType="Basic" />
          </security>
        </binding>
    </bindings>
    
    <services>
      <service behaviorConfiguration="MyProject.WCFInterface.DownloadBehavior"
        name="MyProject.WCFInterface.DownloadFile">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicStreaming"
          contract="MyProject.WCFInterface.IDownloadFile" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>    
    </services>
    
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyProject.WCFInterface.DownloadBehavior">
          <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    
    Could not find a base address that matches scheme https for the endpoint with binding BasicHttpBinding. Registered base address schemes are [http].