2012-02-22 121 views
-1

我在IIS服务器上托管了WCF服务,我给了SSL证书,并且已经从makecert.exe命令行安装了服务器证书。但是当我打开Service.svc 。与在IIS上托管的WCF服务相关的问题

我得到了以下错误:

键集不存在与密码学相关的...

我的web.config文件是这样的:

<?xml version="1.0"?> 
    <!-- 
     Note: As an alternative to hand editing this file you can use the 
     web admin tool to configure settings for your application. Use 
     the Website->Asp.Net Configuration option in Visual Studio. 
     A full list of settings and comments can be found in 
     machine.config.comments usually located in 
     \Windows\Microsoft.Net\Framework\v2.x\Config 
    --> 
    <configuration> 
     <!--<configSections> 
      <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
       <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
         <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/> 
         <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
         <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
         <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
        </sectionGroup> 
       </sectionGroup> 
      </sectionGroup> 
     </configSections>--> 
     <appSettings/> 
     <connectionStrings/> 
     <system.web> 
      <!-- 
       Set compilation debug="true" to insert debugging 
       symbols into the compiled page. Because this 
       affects performance, set this value to true only 
       during development. 
      --> 
      <compilation debug="true"> 
       <assemblies> 
        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
        <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       </assemblies> 
      </compilation> 
      <!-- 
       The <authentication> section enables configuration 
       of the security authentication mode used by 
       ASP.NET to identify an incoming user. 
      --> 
      <authentication mode="Windows"/> 
      <!-- 
       The <customErrors> section enables configuration 
       of what to do if/when an unhandled error occurs 
       during the execution of a request. Specifically, 
       it enables developers to configure html error pages 
       to be displayed in place of a error stack trace. 

      <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 
       <error statusCode="403" redirect="NoAccess.htm" /> 
       <error statusCode="404" redirect="FileNotFound.htm" /> 
      </customErrors> 
      --> 
      <pages> 
       <controls> 
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       </controls> 
      </pages> 
      <httpHandlers> 
       <remove verb="*" path="*.asmx"/> 
       <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
      </httpHandlers> 
      <httpModules> 
       <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      </httpModules> 
     </system.web> 
     <system.codedom> 
      <compilers> 
       <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
        <providerOption name="CompilerVersion" value="v3.5"/> 
        <providerOption name="WarnAsError" value="false"/> 
       </compiler> 
      </compilers> 
     </system.codedom> 
     <!--<system.web.extensions> 
      <scripting> 
       <webServices> 
        <authenticationService enabled="true" 
         requireSSL ="true"/> 
       </webServices> 
      </scripting> 
     </system.web.extensions>--> 

     <!-- 
      The system.webServer section is required for running ASP.NET AJAX under Internet 
      Information Services 7.0. It is not necessary for previous version of IIS. 
     --> 
     <system.webServer> 
      <validation validateIntegratedModeConfiguration="false"/> 
      <modules> 
       <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      </modules> 
      <handlers> 
       <remove name="WebServiceHandlerFactory-Integrated"/> 
       <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      </handlers> 
     </system.webServer> 
     <system.serviceModel> 
      <bindings> 
       <wsHttpBinding> 
        <binding name="wsHttpEndpointBinding"> 
         <security> 
          <message clientCredentialType="Certificate"/> 
         </security> 
        </binding> 
       </wsHttpBinding> 
      </bindings> 
      <services> 
       <service name="WsHttpCertificates.Service1" behaviorConfiguration="WsHttpCertificates.Service1Behavior"> 
        <!-- Service Endpoints --> 
        <endpoint address="http://localhost:1974/Service1.svc" binding="wsHttpBinding" bindingConfiguration="wsHttpEndpointBinding" contract="WsHttpCertificates.IService1"> 
         <!-- 
        Upon deployment, the following identity element should be removed or replaced to reflect the 
        identity under which the deployed service runs. If removed, WCF will infer an appropriate identity 
        automatically. 

       <identity> 
       <dns value="localhost"/> 
       </identity>--> 
        </endpoint> 
        <!--<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>--> 
        <!--<host> 
         <baseAddresses> 
          <add baseAddress="http://localhost:1974/Service1.svc"/> 
         </baseAddresses> 
        </host>--> 
       </service> 
      </services> 
      <behaviors> 
       <serviceBehaviors> 
        <behavior name="WsHttpCertificates.Service1Behavior"> 
         <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
         <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:1974/Service1.svc"/> 
         <serviceCredentials> 
          <windowsAuthentication allowAnonymousLogons="true"/> 
          <clientCertificate> 
           <authentication certificateValidationMode="PeerTrust"/> 
          </clientCertificate> 
          <serviceCertificate storeLocation="LocalMachine" findValue="a2 62 7e c8 4a 46 08 99 43 80 fc 5e b2 23 1d 3b" x509FindType="FindBySerialNumber"/> 
         </serviceCredentials> 
         <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
         <serviceDebug includeExceptionDetailInFaults="false"/> 
        </behavior> 
       </serviceBehaviors> 
      </behaviors> 
     </system.serviceModel> 
    </configuration> 

莫非任何机构帮助我摆脱这个错误..

回答

0

如果你是tr ying在https上托管,你可能需要在配置中使用mexHttpsBinding。修改你的第一次尝试,看看是否能解决它?

+0

相同的错误。没有效果 – user901916 2012-02-22 06:01:27

+0

更改地址=“http:// localhost:1974/Service1.svc”as address =“” – Sibin 2012-02-22 12:20:21

+0

我也更改了地址。但它给出了同样的错误。 – user901916 2012-02-23 04:57:21