HTTP错误500.19 - 内部服务器错误请求的页面不能(WCF + REST + IIS7 + SSL)

时间:2011-01-25 14:54:07

标签: wcf rest iis-7 ssl https

我正在尝试使用SSL在IIS上托管我的WCF REST服务。

环境:我正在使用本地IIS服务器在Windows7机器上进行测试。我已经在我的开发箱上自行注册了证书并且有:

  1. 在IIS中创建了一个站点,目的是通过HTTPS公开此WCF服务。
  2. 在此网站下创建了一个应用程序,并将其命名为“api”
  3. 导航到IIS中的我的网站
  4. 点击右侧“动作”面板中的“绑定...”。
  5. 点击“添加”
  6. 选择“https”并选择我的证书。
  7. 许多REST管道都是使用WcfRestContrib库通过WCF中的扩展来处理的。虽然从编程的角度来看这很有用,但是当出现问题时,文档的方式很少。

    我目前得到的错误是:

    Error Summary
    
    HTTP Error 500.19 - Internal Server Error The requested page cannot
    
         

    因为相关而被访问   页面的配置数据是   无效。详细的错误信息   模块IIS Web核心   通知BeginRequest处理程序没有   尚未确定错误代码0x8007000d   配置错误配置   文件\?\ C:\ inetpub \ eMobile \ api \ web.config   要求   网址https://172.xx.xx.254:443/api   物理   路径C:\ inetpub \ eMobile \ api登录   方法尚未确定登录   用户尚未确定

    Config Source
    
       -1: 
        0:
    

    我真的不确定我在这里做错了什么。到目前为止,我已经尝试过对我的网站反对功能委托,但这不起作用。有任何想法吗?我的web.config中有什么奇怪的东西吗?

    感谢。

    <?xml version="1.0"?>
    <configuration>
      <connectionStrings>
        <add name="e1ConnectionString" connectionString="Data Source=USSV112;Initial Catalog=e1;Integrated Security=True"
          providerName="System.Data.SqlClient" />
        <add name="e2ConnectionString" connectionString="Data Source=USSV112;Initial Catalog=e2;Integrated Security=True"
          providerName="System.Data.SqlClient" />
      <system.web>
        <httpRuntime maxRequestLength="204800" executionTimeout="3600"/>
        <compilation debug="true" targetFramework="4.0">
        </compilation>
        <httpModules>
          <add name="ServiceAnonymityModule" type="WcfRestContrib.Web.ServiceAnonymityModule, WcfRestContrib, Version=1.0.6.107, Culture=neutral"/>
        </httpModules>
        <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
      </system.web>
      <system.webServer>
        <rewrite>
          <rules>
            <rule name="Users" stopProcessing="true">
              <match url="^rest/users/(.*)$"/>
              <action type="Rewrite" url="rest/Users.svc/{R:1}" />
            </rule>
          </rules>
        </rewrite>
        <validation validateIntegratedModeConfiguration="false" />
        <modules>
          <remove name="ServiceAnonymityModule"/>
          <add name="ServiceAnonymityModule" type="WcfRestContrib.Web.ServiceAnonymityModule, WcfRestContrib, Version=1.0.6.107, Culture=neutral"/>
        </modules>
      </system.webServer>
      <system.diagnostics>
        <sources>
          <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
            <listeners>
              <add name="messages" type="System.Diagnostics.XmlWriterTraceListener" initializeData="d:\Temp\WcfRestContribErrors.log" />
            </listeners>
          </source>
          <source name="System.ServiceModel.MessageLogging">
            <listeners>
              <add name="messages" type="System.Diagnostics.XmlWriterTraceListener" initializeData="d:\Temp\WcfRestContribMessages.log" />
            </listeners>
          </source>
        </sources>
        <trace autoflush="true"/>
      </system.diagnostics>
      <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
        <extensions>
          <behaviorExtensions>
            <add name="webAuthentication" type="WcfRestContrib.ServiceModel.Configuration.WebAuthentication.ConfigurationBehaviorElement, WcfRestContrib, Version=1.0.6.107, Culture=neutral, PublicKeyToken=89183999a8dc93b5" />
            <add name="errorHandler" type="WcfRestContrib.ServiceModel.Configuration.ErrorHandler.BehaviorElement, WcfRestContrib, Version=1.0.6.107, Culture=neutral, PublicKeyToken=89183999a8dc93b5" />
            <add name="webFormatter" type="WcfRestContrib.ServiceModel.Configuration.WebDispatchFormatter.ConfigurationBehaviorElement, WcfRestContrib, Version=1.0.6.107, Culture=neutral, PublicKeyToken=89183999a8dc93b5" />
            <add name="webErrorHandler" type="WcfRestContrib.ServiceModel.Configuration.WebErrorHandler.ConfigurationBehaviorElement, WcfRestContrib, Version=1.0.6.107, Culture=neutral, PublicKeyToken=89183999a8dc93b5" />
          </behaviorExtensions>
        </extensions>
        <bindings>
          <customBinding>
            <binding name="HttpStreamedRest">
              <httpTransport maxReceivedMessageSize="209715200" manualAddressing="true"/>
            </binding>
            <binding name="HttpsStreamedRest">
              <httpsTransport maxReceivedMessageSize="209715200"  manualAddressing="true"/>
            </binding>
          </customBinding>
        </bindings>
        <behaviors>
          <serviceBehaviors>
            <behavior name="Rest">
              <webAuthentication authenticationHandlerType="WcfRestContrib.ServiceModel.Dispatcher.WebBasicAuthenticationHandler, WcfRestContrib"
                usernamePasswordValidatorType="Engage.Mobile.WebServices.Runtime.SecurityValidator, Engage.Mobile.WebServices"
                requireSecureTransport="false" source="E Mobile" />
              <webFormatter>
                <formatters defaultMimeType="application/json">
                  <formatter type="WcfRestContrib.ServiceModel.Dispatcher.Formatters.PoxDataContract, WcfRestContrib"
                    mimeTypes="application/xml,text/xml" />
                  <formatter type="WcfRestContrib.ServiceModel.Dispatcher.Formatters.DataContractJson, WcfRestContrib"
                    mimeTypes="application/json" />
                  <formatter type="WcfRestContrib.ServiceModel.Dispatcher.Formatters.FormUrlEncoded, WcfRestContrib"
                    mimeTypes="application/x-www-form-urlencoded" />
                </formatters>
              </webFormatter>
              <errorHandler errorHandlerType="WcfRestContrib.ServiceModel.Web.WebErrorHandler, WcfRestContrib" />
              <webErrorHandler logHandlerType="Engage.Mobile.WebServices.Runtime.LogHandler, Engage.Mobile.WebServices" returnRawException="true" exceptionDataContractType="" />
              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>
    

3 个答案:

答案 0 :(得分:1)

它看起来非常像thread

建议的答案是

  
      
  1. 右键单击您网站所在的文件夹:“C:\ Users \ NAME \ SiteName”并选择“属性”
  2.   
  3. 选择“安全”选项卡,然后单击“编辑”
  4.   
  5. 添加..并输入“IIS_IUSRS”
  6.   

答案 1 :(得分:1)

我在this thread中发布了类似的答案,对于这些错误,SO也有类似的答案。

您的web.config中有一个重写元素,如果没有安装URL重写,IIS无法识别此元素并抛出您当前看到的错误。安装URL Rewrite,这应该可行。

答案 2 :(得分:0)

您可以尝试在服务上启用跟踪,以查看请求是否已到达服务或IIS本身是否失败。如果它到达您的服务,那么跟踪将获取失败的确切错误。要启用跟踪,请遵循此link