로컬 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 휴식 서비스를 검색하거나 연결할 수없는 이유를 이해하지 못합니다.
도움을 주시면 감사하겠습니다. 미리 감사드립니다.
을 -i 윈도우 커뮤니케이션 파운데이션 \ 프레임 워크 \ 3.0> \ 나는 내 웹 서비스를 내 로컬 IIS 7에 게시하려고 시도했음을 추가하고 싶었습니다. ASP 웹 사이트를 4.0.3으로 변경하고 ServiceModelReg -i를 실행하면됩니다. VS2010에서 IIS 6을 실행하는 Windows 서버 2003 상자로 게시했을 때 inetput/wwwroot 아래에 생성 된 webservice 폴더를 복사했지만 여전히 실행할 수 없습니다. 감사합니다 : – ptn77
이것에 대한 추가 정보가 있습니다. 이벤트 뷰어에서 다음 오류가 발생합니다. ASP.NET 설치를 검색 할 수 없습니다. ASP에 의존하기 때문에 웹 호스트 스크립트 매핑 구성 요소를 건너 뛰고 ASP.NET을 사용할 수 없습니다. .NET이 제대로 작동 함 이 메시지가 오류라고 생각되면 ASP.NET 설치가 제대로 설치되어 있고 올바른 버전인지 확인하십시오 – ptn77