2013-05-15 4 views
2

로컬 VS2010 환경에서 정상적으로 실행되는 WCF rest webservice가 있지만 Windows 2003 서버에서 IIS 6.0에 배포하면 HTTP 오류 404 - 파일 또는 디렉토리를 찾을 수 없습니다. 비슷한 질문을 가진 다른 스레드를 검색해 보았습니다.WCF Rest webservice를 IIS 6.0에 배포하면 HTTP 오류 404가 발생합니다 - 파일 또는 디렉토리를 찾을 수 없음

[ServiceContract] 
public interface IRestServiceImpl 
{ 
    [OperationContract] 
    [WebInvoke(Method = "PUT", ResponseFormat = WebMessageFormat.Xml, 
     BodyStyle = WebMessageBodyStyle.Bare, 
     UriTemplate = "Execute")] 
    ExecuteResponse Execute(ExecuteRequest request); 

    [OperationContract] 
    [WebInvoke(Method = "PUT", ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.Bare, 
     UriTemplate = "ExecutePutJSON")] 
    ExecuteResponse ExecutePutJSON(ExecuteRequest request); 
} 

구현 코드 뒤에 (RestServiceImpl.svc.cs)는 다음과 같다 :

public class RestServiceImpl : IRestServiceImpl 
{ 
    public ExecuteResponse Execute(ExecuteRequest request) 
    { 
     //processing code that returns ExecuteResponse 
    } 

    public ExecuteResponse Execute(ExecuteRequest request) 
    { 
     //processing code that returns ExecuteResponse 
    } 
} 

는 다음에 나오는 RestServiceImpl.svc가 될 때 :

<%@ ServiceHost Language="C#" Debug="true" Service="CICJIS.IWS.RestServiceImpl" 
CodeBehind="RestServiceImpl.svc.cs" %> 

여기 내 서비스 계약의 Web.config :

<configuration> 
    <system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" 
     switchValue="Information, ActivityTracing"> 
     <listeners> 
      <add name="messages" /> 
     </listeners> 
    </source> 
    <source name="System.ServiceModel.MessageLogging"> 
    <listeners> 
     <add name="messages" /> 
    </listeners> 
    </source> 
</sources> 
<sharedListeners> 
    <add name="messages" 
    type="System.Diagnostics.XmlWriterTraceListener" 
    initializeData="C:\Logs\RestService.svclog" /> 
</sharedListeners> 
<trace autoflush="true" /> 
</system.diagnostics> 
<system.web> 
    <compilation debug="true" defaultLanguage="c#" targetFramework="4.0" /> 
    <httpRuntime maxRequestLength="999999" maxQueryStringLength="999999" 
    executionTimeout="999"/> 
</system.web> 
<system.serviceModel> 
    <diagnostics> 
     <messageLogging 
     logEntireMessage="true" 
     logMalformedMessages="true" 
     logMessagesAtServiceLevel="true" 
     logMessagesAtTransportLevel="true" 
     maxMessagesToLog="3000" 
     maxSizeOfMessageToLog="10000000" /> 
    </diagnostics> 

    <services> 
     <service name="RestServiceImpl" behaviorConfiguration="ServiceBehavior"> 
     <endpoint address="" binding="webHttpBinding" contract="IRestServiceImpl" 
      behaviorConfiguration="web"> 

     </endpoint> 
     </service> 
    </services> 

    <behaviors> 
     <endpointBehaviors> 
     <behavior name="web"> 
      <webHttp /> 
     </behavior> 
     </endpointBehaviors> 

     <serviceBehaviors> 
     <behavior name="ServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

</configuration> 
0123) 2. -i는 C 란에는 aspnet_regiis

1.

)를 사용하여 ASP.net 4.0을 설치 :

나는 다음과 같은 시도 \ WINDOWS를 \ Microsoft.NET 윈도우 커뮤니케이션 파운데이션 \ 프레임 워크 \ 3.0> 서비스 \ ModelReg.exe -i 3.) 수동으로 .svc가 c : \ windows \ microsoft.net \ framework \ v4.0.30319 \ aspnet_isapi.dll을 가리 키도록 웹 사이트 속성에서 .svc 확장명 매핑을 변경했습니다. 4.) 디렉토리 보안에서 통합 Windows 인증이 선택 취소되었습니다. 5.) 웹 사이트 속성에서 ASP.net 버전이 2.0에서 4.0으로 변경되었습니다.

동일한 WCF SOAP 웹 서비스가 IIS와 동일한 서버에 배포되어 있으므로 찾아보고 연결할 수 있습니다. 나는이 WCF 휴식 서비스를 검색하거나 연결할 수없는 이유를 이해하지 못합니다.

도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+0

을 -i 윈도우 커뮤니케이션 파운데이션 \ 프레임 워크 \ 3.0> \ 나는 내 웹 서비스를 내 로컬 IIS 7에 게시하려고 시도했음을 추가하고 싶었습니다. ASP 웹 사이트를 4.0.3으로 변경하고 ServiceModelReg -i를 실행하면됩니다. VS2010에서 IIS 6을 실행하는 Windows 서버 2003 상자로 게시했을 때 inetput/wwwroot 아래에 생성 된 webservice 폴더를 복사했지만 여전히 실행할 수 없습니다. 감사합니다 : – ptn77

+0

이것에 대한 추가 정보가 있습니다. 이벤트 뷰어에서 다음 오류가 발생합니다. ASP.NET 설치를 검색 할 수 없습니다. ASP에 의존하기 때문에 웹 호스트 스크립트 매핑 구성 요소를 건너 뛰고 ASP.NET을 사용할 수 없습니다. .NET이 제대로 작동 함 이 메시지가 오류라고 생각되면 ASP.NET 설치가 제대로 설치되어 있고 올바른 버전인지 확인하십시오 – ptn77

답변

1

좋아, 문제를 해결했습니다. 난 그냥 다음 단계를 두 번 다시 실행하고 그것은 내 문제를 해결 보였다. 나는 나의 휴식 webservice에 지금 도착할 수있다.

  1. 는 C 란 -i
  2. 에는 aspnet_regiis 사용하여 ASP.net 4.0을 설치 : \ WINDOWS를 \ Microsoft.NET 서비스 ModelReg.exe는
+0

1. 단계를 aspnet_regiis -i로 변경하여 문제를 해결했습니다. 가능하게하다 –