1

私は質問を書くのが初めてで、長年の読者です。何か省略した場合はお知らせください。

さまざまなシナリオと考えられる修正を調べましたが、WCF サービスを正しく機能させることができませんでした。

私のサービスは、多くの異なるセットからマスター リポジトリにデータを渡す役割を果たします。クライアントはローカル セット レベルでデータを収集し、データを挿入して結果メッセージを返すサービスに渡します。これもテスト環境では正常に動作しました。

本番環境では、サービスをオフサイト サーバーに追加し、リモート セットでクライアントを構成しました。クライアントは、サービスからの更新を構成および受信できました。今まではすべて正常に機能していました。ただし、クライアントがデータを転送しようとすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生しました。

バグ チェックを通じて、データベースへの接続文字列の問題がないことを確認しました。テスト環境で同じデータ転送を再度実行しましたが、問題はありませんでした。ローカル セットの .svc URL に接続できました。

データ コントラクト メソッドの呼び出しを通じてさまざまな時点でログを追加しましたが、これらのログのいずれも結果をトリガーしませんでした。また、テスト アプリで書き込み機能をテストしたところ、temp フォルダーへの資格情報の書き込みに問題がないことが確認されました。例えば:

public Result InsertVenueRecord(Venue v)
{
        System.IO.File.WriteAllText(@"C:\temp\MadeItToVenue" + DateTime.Now.Ticks.ToString() + ".log.txt", "insertVenue()\r\n\r\n");
        int oldId = v.VenueId;
        try
        {
            System.IO.File.WriteAllText(@"C:\temp\MadeItToVenue" + DateTime.Now.Ticks.ToString() + ".log.txt", "insertVenue()\r\n\r\n");
            //Check Address 
            if (v.Address.AddressId != 0)

クライアント app.Config は次のようになります。

    <configuration>
    <system.serviceModel>
      <bindings>
        <basicHttpBinding>
          <binding name="BasicHttpBinding_placeholder" />
        </basicHttpBinding>
      </bindings>  
      <client>
        <endpoint address="Removed" binding="basicHttpBinding"
          bindingConfiguration="BasicHttpBinding_placeholder" contract="placeholder.placeholder"
          name="BasicHttpBinding_placeholder" />
      </client>
    </system.serviceModel>
  <appSettings>
    <add key="DTFirstWave" value="Venue|Event|EventSurveyLocation|Agent|LoginHistory|LoginUsed"/>
  </appSettings>
  <connectionStrings>
    <!-- Removed Connection Strings -->

  </connectionStrings>
</configuration> 

サービスの webconfig は次のようになります。

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0"/>
        <httpRuntime/>
    </system.web>
    <system.serviceModel>
        <bindings>
             <basicHttpBinding>
                  <binding allowCookies="true" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="32" maxStringContentLength="52428800" maxArrayLength="52428800" maxBytesPerRead="52428800" maxNameTableCharCount="52428800"/>
    </binding>
  </basicHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<protocolMapping>
  <add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>

 <directoryBrowse enabled="true"/>
 </system.webServer>
 <connectionStrings>
 <!--Removed -->
 </connectionStrings>
</configuration>

なぜこれが機能しないのか、私は途方に暮れています。

4

1 に答える 1

2

サービス構成にsystem.daignosticsを追加するだけで、サービスSVCログを有効にしてください。本番環境で適切なエラーが発生します。

サービスディレクトリに「App_tracelog.svclog」ファイルが作成されます。

<system.diagnostics>
<sources>
  <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
    <listeners>
      <add name="ServiceModelTraceListener" />
    </listeners>
  </source>
  <source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
    <listeners>
      <add name="ServiceModelTraceListener" />
    </listeners>
  </source>
  <source name="System.Runtime.Serialization" switchValue="Verbose,ActivityTracing">
    <listeners>
      <add name="ServiceModelTraceListener" />
    </listeners>
  </source>
</sources>
<sharedListeners>
  <add initializeData="App_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="Timestamp" />
</sharedListeners>

于 2013-10-16T20:06:49.187 に答える