반응형

405 method not allowed 해결방법

 

 

Windows Server 2008 R2 Standard 서버를 사용하다가

 

 

서버 EOS 가 되면서 Windows Server 2016 Standard 버전을 사용하게 되었다.

 

 

내부 시스템을 전환하기 위해서 소스와 서버 환경을

 

 

순차적으로 옮기는 과정이 순조롭게 진행되는가 싶더만

 

 

최종과정에서 확인하려고 접속해보니 405 오류가 발생하는 것이다.

 

 

 

 

 

오류 메세지 보기

원격 서버에서 (405) 메서드를 사용할 수 없음 오류를 반환했습니다. 

응용 프로그램에 서버 오류가 있습니다. 

원격 서버에서 (405) 메서드를 사용할 수 없음 오류를 반환했습니다. 

설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오. 

예외 정보: System.Net.WebException: 원격 서버에서 (405) 메서드를 사용할 수 없음 오류를 반환했습니다. 

소스 오류 

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예외의 원인 및 위치 정보를 확인할 수 있습니다. 

스택 추적: 

[WebException: 원격 서버에서 (405) 메서드를 사용할 수 없음 오류를 반환했습니다.] 
   System.Net.HttpWebRequest.GetResponse() +1399 
   System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +55 

[ProtocolException: 원격 서버가 필요하지 않은 응답을 반환했습니다. (405) Method Not Allowed.] 
   System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +153 
   System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +336 
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 
   System.Web.UI.Control.OnLoad(EventArgs e) +95 
   System.Web.UI.Control.LoadRecursive() +59 
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678 

버전 정보:Microsoft .NET Framework 버전:4.0.30319; ASP.NET 버전:4.7.3163.0 


[WebException]: 원격 서버에서 (405) 메서드를 사용할 수 없음 오류를 반환했습니다. 
   위치: System.Net.HttpWebRequest.GetResponse() 
   위치: System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) 
[ProtocolException]: 원격 서버가 필요하지 않은 응답을 반환했습니다. (405) Method Not Allowed. 

Server stack trace:  
   위치: System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory`1 factory, WebException responseException, ChannelBinding channelBinding) 
   위치: System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) 
   위치: System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) 
   위치: System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) 
   위치: System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
   위치: System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
   위치: System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

Exception rethrown at [0]:  
   위치: System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
   위치: System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
   위치: System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) 
   위치: System.Web.UI.Control.OnLoad(EventArgs e) 
   위치: System.Web.UI.Control.LoadRecursive() 
   위치: System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
[HttpUnhandledException]: 'System.Web.HttpUnhandledException' 형식의 예외가 Throw되었습니다. 
   위치: System.Web.UI.Page.HandleError(Exception e) 
   위치: System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
   위치: System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
   위치: System.Web.UI.Page.ProcessRequest() 
   위치: System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) 
   위치: System.Web.UI.Page.ProcessRequest(HttpContext context) 
   위치: ASP.dashboard_aspx.ProcessRequest(HttpContext context) 
   위치: System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
   위치: System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) 
   위치: System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

자세한 오류 메시지를 표시하도록 ASP.NET이 를 사용하여 구성되었으므로 이 오류 페이지에는 중요한 정보가 포함될 수 있습니다.  
프로덕션 환경에서는  또는 를 사용하십시오.

 

 

 

 

 

구글링으로 찾아보니 대부분의 답변은

 

 

method 방식을 GET 을 사용하면 되는데 POST 를 사용하면 405 오류가 발생하더라

 

 

또는 Access-Control-Allow-Origin 을 헤더 정보에 넣어줘야 한다

 

 

등등 여러 답변이 있어서 대부분 적용해 보았지만 오류가 해결되지 않았다ㅠㅠ

 

 

#오류해결

 

소스나 web.config 파일에서 문제를 찾다가

 

 

설정쪽에 문제가 있진 않았을까 하고 구글 검색 방식을 바꿔보니

 

 

HTTP 활성화를 해줘야 한다는 것이다.

 

 

서버 역할에서 백날 빠진 게 있나 찾아봤었는데

 

 

다음단계인 기능에서 확인해볼 수 있는 내용이었다.

 

 

 

HTTP 활성화는 HTTP 를 통한 프로세스 활성화를 지원합니다.

HTTP 활성화를 사용하는 응용 프로그램은

네트워크에서 HTTP를 통해 도착하는 작업 항목에 대한 응답으로

동적으로 시작되고 중지될 수 있습니다.

 

 

라는 내용을 가지고 있는데

 

WCF 서비스에서 HTTP 활성화를 켜둬야 POST 나 GET method 를 사용할 수 있게 된다.

 

 

WCF 서비스는 Windows Communication Foundation 의 약자로

 

 

여러 응용프로그램을 커뮤니케이션(연결)해주는 서비스라고 생각하시면 됩니다.

 

 

.NET Framework 기능에서 HTTP 를 활성해주어야 정상적인 웹 동작을 할 수 있다는 것을 알게 되어서 기쁘네요^^

 

 

 

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,