2013-09-03 2 views
0

최근 내 프로젝트를 업그레이드했습니다. from .NET Framework 3.5 to 4.0. WCF의 경우 사용자 지정 기본 인증을 사용하고 있습니다.WCF 예상외의 파일 오류 오류

변환 전에 모두 정상적으로 작동했습니다. 그러나 변환 후 "Unexpected end of file error"이 표시됩니다. 스택의 strace은 다음과 같습니다 :

at System.Xml.EncodingStreamWrapper.ProcessBuffer(Byte[] buffer, Int32 offset, Int32 count, Encoding encoding) 
    at System.Xml.XmlUTF8TextReader.SetInput(Byte[] buffer, Int32 offset, Int32 count, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose) 
    at System.Xml.XmlDictionaryReader.CreateTextReader(Byte[] buffer, Int32 offset, Int32 count, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose) 
    at System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.WriteMessage(Message message, Int32 maxMessageSize, BufferManager bufferManager, Int32 messageOffset) 
    at System.ServiceModel.Channels.WebMessageEncoderFactory.WebMessageEncoder.WriteMessage(Message message, Int32 maxMessageSize, BufferManager bufferManager, Int32 messageOffset) 
    at System.ServiceModel.Channels.HttpOutput.SerializeBufferedMessage(Message message) 
    at System.ServiceModel.Channels.HttpOutput.Send(TimeSpan timeout) 
    at System.ServiceModel.Channels.HttpPipeline.EmptyHttpPipeline.SendReplyCore(Message message, TimeSpan timeout) 
    at System.ServiceModel.Channels.HttpPipeline.EmptyHttpPipeline.SendReply(Message message, TimeSpan timeout) 
    at System.ServiceModel.Channels.HttpRequestContext.OnReply(Message message, TimeSpan timeout) 
    at System.ServiceModel.Activation.HostedHttpContext.OnReply(Message message, TimeSpan timeout) 
    at System.ServiceModel.Channels.RequestContextBase.Reply(Message message, TimeSpan timeout) 
    at System.ServiceModel.Channels.RequestContextBase.Reply(Message message) 
    at ihv1Role.auth.BasicAuthenticationInterceptor.ProcessRequest(RequestContext& requestContext) in d:\src\auth\BasicAuthenticationInterceptor.cs:line 78 

클래스 및 방법하는 나는 오류가 점점 오전에 다음과 같습니다 :

페이지

ublic class BasicAuthenticationInterceptor : RequestInterceptor 
{ 
    MembershipProvider provider; 
    string realm; 

    public BasicAuthenticationInterceptor(MembershipProvider provider, string realm) 
     : base(false) 
    { 
     this.provider = provider; 
     this.realm = realm; 
    } 
    protected string Realm 
    { 
     get { return realm; } 
    } 
    protected MembershipProvider Provider 
    { 
     get { return provider; } 
    } 

    public override void ProcessRequest(ref RequestContext requestContext) 
    { 
     HttpRequestMessageProperty request = (HttpRequestMessageProperty)requestContext.RequestMessage.Properties[HttpRequestMessageProperty.Name]; 
     string[] credentials = ExtractCredentials(requestContext.RequestMessage); 

     if (credentials.Length > 0 && AuthenticateUser(credentials[0], credentials[1], IsTestMode)) 
     { 
      InitializeSecurityContext(requestContext.RequestMessage, credentials[0]); 
     } 
     else 
     { 
      Message reply = Message.CreateMessage(MessageVersion.None, null); 
      HttpResponseMessageProperty responseProperty = new HttpResponseMessageProperty() { StatusCode = HttpStatusCode.Unauthorized }; 
      responseProperty.Headers.Add("WWW-Authenticate", 
      String.Format("Basic realm=\"{0}\"", Realm)); 
      reply.Properties[HttpResponseMessageProperty.Name] = responseProperty; 
      requestContext.Reply(reply); // **Here I am getting error** 
      requestContext = null; 
     } 
    } 
} 

헤더에 사용자 이름과 암호가 다음 유효한 경우 전체 서비스가 잘 돌아갑니다. 요청이 인증되지 않은 경우에만이 오류가 발생합니다.

모든 솔루션? 내가의 Web.config 두 번 태그를 추가했다

:

감사

답변

0

는 내 자신을 해결.

제거한 후 서비스가 정상적으로 작동 중입니다.