Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于HTTPS的WCF REST_Wcf_Rest_Iis_Ssl_Iis Express - Fatal编程技术网

基于HTTPS的WCF REST

基于HTTPS的WCF REST,wcf,rest,iis,ssl,iis-express,Wcf,Rest,Iis,Ssl,Iis Express,我正在使用WCF、C#和.NETFramework4.0开发RESTWeb服务 我已按照此步骤创建了自己的证书,并将IIS Express用作开发服务器 但是现在,我不知道为什么,如果我使用https而不是http,我就无法访问我的web服务 这是IIS Expressapplicationhost.config: <site name="MyGameWCFService" id="2"> <application path="/" applicationPool="C

我正在使用WCF、C#和.NETFramework4.0开发RESTWeb服务

我已按照此步骤创建了自己的证书,并将IIS Express用作开发服务器

但是现在,我不知道为什么,如果我使用https而不是http,我就无法访问我的web服务

这是IIS Expressapplicationhost.config:

<site name="MyGameWCFService" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="D:\Fuentes\CSharp\Test\MyLib\MyGameWCFService" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:7342:localhost" />
        <binding protocol="https" bindingInformation="*:44300:localhost" />
        <binding protocol="https" bindingInformation="*:443:Melnibone" />
    </bindings>
</site>

这是我的WCFweb.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="MyGameWCFService.MyGameService"
               behaviorConfiguration="MyGameServiceBehaviour">
        <endpoint address=""
                  contract="MyGameWCFService.IMyGameService"
                  behaviorConfiguration="restfulBehavior"
                  binding="webHttpBinding"
              bindingConfiguration="WebHttpBindingConfig"  />
      </service>
    </services>
    <bindings>
      <webHttpBinding>
        <binding name="WebHttpBindingConfig">
          <security mode="Transport"/>
        </binding>
      </webHttpBinding>
    </bindings>
    <behaviors>
      <endpointBehaviors>
        <behavior name="restfulBehavior">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="MyGameServiceBehaviour">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
  <connectionStrings>
    <add name="MyGameContext"
          providerName="System.Data.SqlClient"
          connectionString="Server=.\SQLEXPRESS;Database=MyGame;Integrated Security=True;MultipleActiveResultSets=True"/>
  </connectionStrings>
</configuration>

我可以使用以下url访问web服务:
http://localhost:7342/MyGameService.svc/users

但是如果我使用其他的,我就不能:
https://localhost:4430/MyGameService.svc/users

https://Melnibone:443/MyGameService.svc/users


我在同一台计算机上测试(我在Melnibone上测试)

当我从
https://localhost:44300/MyGameService.svc/users
我找不到HTTP 404


有什么建议吗?要找到这个答案,我检查了所有http绑定,花了大约半天的时间。但我明白了! 对配置进行更改,如下所示:

<services>
   <service behaviorConfiguration="Default" name="Service_Name">
    <endpoint behaviorConfiguration="webBehavior" binding="webHttpBinding" bindingConfiguration="httpsBinding" contract="Contract.IContract" />
   </service>
  </services>
  <bindings>
    <webHttpBinding>
     <binding name="httpsBinding">
        <security mode="Transport" />
     </binding>
     </webHttpBinding>
   </bindings>
  <behaviors>
   <endpointBehaviors>
    <behavior name="webBehavior">
     <webHttp />
    </behavior>
   </endpointBehaviors>
   <serviceBehaviors>
    <behavior name="Default">
     <serviceMetadata httpsGetEnabled="true" />
    </behavior>
   </serviceBehaviors>
  </behaviors>

为了找到这个答案,我检查了所有http绑定,花了大约半天的时间。但我明白了! 对配置进行更改,如下所示:

<services>
   <service behaviorConfiguration="Default" name="Service_Name">
    <endpoint behaviorConfiguration="webBehavior" binding="webHttpBinding" bindingConfiguration="httpsBinding" contract="Contract.IContract" />
   </service>
  </services>
  <bindings>
    <webHttpBinding>
     <binding name="httpsBinding">
        <security mode="Transport" />
     </binding>
     </webHttpBinding>
   </bindings>
  <behaviors>
   <endpointBehaviors>
    <behavior name="webBehavior">
     <webHttp />
    </behavior>
   </endpointBehaviors>
   <serviceBehaviors>
    <behavior name="Default">
     <serviceMetadata httpsGetEnabled="true" />
    </behavior>
   </serviceBehaviors>
  </behaviors>


防火墙是否打开?我正在运行IIS Express的同一台计算机上测试它。防火墙是否打开?我正在运行IIS Express的同一台计算机上测试它。