0

.NET 1.1 を使用するこの Web サービスの製品版には、この問題はありません。これは、Windows Server 2003 で .NET 4.0 を実行しているテスト環境にあります。

次の例外が発生するという問題があります。

    System.Net.WebException: The operation has timed out    
at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)    
at System.Net.HttpWebRequest.GetRequestStream()    
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)    
at HTP.RHIO.PIRManager.TargetWS.PIRService.Upload(Transmission t_request)    
at HTP.RHIO.PIRManager.Manager.PIRManager.Upload(Transmission request)

これは、Web サービスの Upload メソッドが別の Web サービスの Upload メソッドを呼び出すときに発生します。タイムアウトはほぼ即座に、約 1/3 秒で発生します (log_datetime 列に注意してください)。

ログ

コード: (例外出力に間隔を記録する行はまだ実装されていないため、出力に表示されません。間隔 = 60 [*1000] のデフォルト値まで落ちるはずです)

int interval = 0;                                                                           
try 
{

    try
    {
        interval = Convert.ToInt16(System.Configuration.ConfigurationSettings.AppSettings["RealTimeTimeOutSeconds"]);
    }
    catch(Exception ex)
    {
        interval = 60;
    }

    interval = interval * 1000;
    target.Timeout = interval;
    trans = target.Upload(trans);
    }                               
    catch(System.Net.WebException ex)
    {               
        request.TransmissionHeader.MessageCode = GetReturnMessageCode(ex); 
        request.TransmissionHeader.Message = ex.Message;
        Log(request.TransmissionHeader, "Upload", "FAILED", "(Timeout = " + interval.ToString() + ") " + ex.ToString(), 1);

        trans = TA1forFailedRealtimeUpload(trans.TransmissionHeader);                                       
        request = ConvertToLocal(trans, request);
        Log(request.TransmissionHeader, "Upload", "SENDING", "Responding to sender with TA1", 1);
        return request;                             
    }
}

そして私のWebサービスのweb.configファイルから:

<httpRuntime executionTimeout="600" maxRequestLength="2000000"/>
4

1 に答える 1

0

Convert.ToInt16期待どおりの結果が得られない場合があります。マニュアルから;

戻り値

型: System.Int16
値の数値に相当する 16 ビットの符号付き整数、または値が null の場合は 0 (ゼロ)。

RealTimeTimeOutSeconds構成で が設定されていない場合は、NULL を変換することになり、タイムアウトがゼロになります。

于 2012-11-14T22:00:43.310 に答える