Azure故障排除HTTP 500:不调用memberhsip提供程序中的验证用户

问题描述 投票:0回答:1

当我尝试将请求发送到WCF服务时,Azure日志有以下错误

在工作的情况下,调用membershipprovider的validate用户,然后调用AfterReceiveRequest,最后调用webservice。

但是在非工作的情况下,不会调用validateuser。它直接转到AfterReceiveRequest,然后webservice抛出一个异常,它无法理解标题。

azure应用程序网关将请求路由到VM。它以某种方式看起来没有被识别的标题或成员资格提供者。 SSL在网关级别进行管理。

<behaviors>
      <serviceBehaviors>
        <behavior name="DefaultBehavior">

          <serviceMetadata  httpGetEnabled ="true" httpsGetEnabled ="true"  />
          <serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true" />
          <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="IDServices.CustomMembershipProvider,IDServices"/>
          </serviceCredentials>
          <useRequestHeadersForMetadataAddress />

        </behavior>

        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="endbehavior1">
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </endpointBehaviors>
    </behaviors>


  { "timeStamp": "2019-03-11T16:18:29+00:00",
     "resourceId": "/SUBSCRIPTIONS/245CA15E-8C11-4F4C-B6D7-9F3E8EC5943F/RESOURCEGROUPS/JXCHANGERG/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/JHAAPPGW",
     "operationName": "ApplicationGatewayAccess", "category": "ApplicationGatewayAccessLog", "properties":
     {"instanceId":"appgw_0","clientIP":"009.04.06.009","clientPort":"65374","httpMethod":"POST","requestUri":"/PImage.svc","requestQuery":"",
     "userAgent":"Apache-HttpClient/4.1.1 (java 1.5)","httpStatus":"500","httpVersion":"HTTP/1.1","receivedBytes":"2638","sentBytes":"917","timeTaken":"0.018","sslEnabled":"on",
     "sslCipher":"ECDHE-RSA-AES256-GCM-SHA384","sslProtocol":"TLSv1.2","serverRouted":"40.124.51.221:80","serverStatus":"500","serverResponseLatency":"0.016","host":"jt.inaresecure.com"}, 
    "time": "2019-03-11T16:18:29.0000000Z"}

任何人都可以帮助我解决可能存在的问题。请求是否在服务器上失败?我得到的只是一个安全头错误。该代码适用于除Azure上的此VM之外的所有其他计算机和服务器。该请求使用应用程序网关路由到在SSL上托管WCF服务的VM

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <s:Fault>
         <faultcode>s:MustUnderstand</faultcode>
         <faultstring xml:lang="en-US">The header 'Security' from the namespace 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' was not understood by the recipient of this message, causing the message to not be processed.  This error typically indicates that the sender of this message has enabled a communication protocol that the receiver cannot process.  Please ensure that the configuration of the client's binding is consistent with the service's binding.</faultstring>
      </s:Fault>
   </s:Body>
</s:Envelope>

由于我的请求,这是同一个呼叫的IIS日志可能在不同的时间

请求设置为使用SSL。为什么日志中有80个?它没有做SSL请求吗?这是来自SOAP UI的请求

2019-03-11 17:27:44 10.0.0.4 POST /PCServices/2019/MySerivce.svc - 80 - 20.45.4.43 Apache-HttpClient/4.1.1+(java+1.5) - 500 0 0 1468
azure wcf ssl virtual-machine
1个回答
0
投票

它可能是HTTP请求失败的原因。如果你从HTTPS调用和调用HTTPS而不是自动完成身份验证。但您必须在HTTP请求中强制进行身份验证。

if (HttpContext.Current.Request.Url.Scheme.ToUpper().Equals("HTTP"))
{
    CustomMembershipProvider auth = new CustomMembershipProvider();
    auth.Validate(Username,Pswd);
}
© www.soinside.com 2019 - 2024. All rights reserved.