2

ローカルの VS2010 環境で正常に動作する WCF Rest Web サービスがありますが、Windows Server 2003 上の 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>

私は次のことを試しました:

1.) aspnet_regiis -i を使用して ASP.net 4.0 をインストールしました 2.) C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation>Service ModelReg.exe -i を実行しました 3.) .svc を手動で変更しました.svc が c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll を指すように、Web サイトのプロパティの拡張子マッピング 4.) ディレクトリ セキュリティで、統合 Windows 認証のチェックを外しました。5.) Web サイトのプロパティで ASP.net のバージョンを 2.0 から 4.0 に変更しました。

同じサーバーと IIS に別の WCF SOAP Web サービスを展開しており、それを参照して正常に接続できます。この WCF レスト サービスを参照したり接続したりできない理由がわかりません。

どんな助けでも大歓迎です!! 前もって感謝します!

4

1 に答える 1

1

わかりました、私は私の問題を解決しました。次の手順を数回再実行しただけで、問題が解決したようです。Rest Webサービスにアクセスできるようになりました。

  1. aspnet_regiis -i を使用して ASP.net 4.0 をインストールしました
  2. C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation>Service ModelReg.exe -i を実行しました
于 2013-05-16T21:43:38.647 に答える