2012-03-31 19 views
5

ASP.Netアプリケーションで支払いゲートウェイAPIを使用しています。 MonoDevelopでXSPでテストするとき、アプリケーションは動作します。 mod_monoでapache2を実行するように設定すると、コードはタイムアウトエラーでクラッシュします。Mono Apache2 HttpWebRequestが「要求のタイムアウト」でクラッシュする

私はApacheでXSPの代わりに何が変わる可能性があるのか​​困っています。とにかく以下タイムアウトされるコードである:

private string SubmitXml(string InputXml) 
{ 
    HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(_WebServiceUrl); 
    webReq.Method = "POST"; 

    byte[] reqBytes; 

    reqBytes = System.Text.Encoding.UTF8.GetBytes(InputXml); 
    webReq.ContentType = "application/x-www-form-urlencoded"; 
    webReq.ContentLength = reqBytes.Length; 
    webReq.Timeout = 5000; 
    Stream requestStream = webReq.GetRequestStream(); 
    requestStream.Write(reqBytes, 0, reqBytes.Length); 
    requestStream.Close(); 

    HttpWebResponse webResponse = (HttpWebResponse)webReq.GetResponse(); 
    using (StreamReader sr = new StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.ASCII)) 
    { 
     return sr.ReadToEnd(); 
    } 
} 

コードが行にクラッシュさ:

要求

説明タイムアウト:Stream requestStream = webReq.GetRequestStream();

エラーがある返さ:HTTP 500。要求を処理中にエラーが発生しました。

スタックトレース:

System.Net.WebException:要求は( System.Net.HttpWebRequest.GetRequestStreamでタイムアウトになりました)[0x0005f] /プライベート/ tmpに/ monobuild /ビルド/ BUILD /モノ2.10.9/mcs/class/System/System.Net/HttpWebRequest.cs:746 at TCShared.PxPay.SubmitXml(System.String InputXml) /Users/liam/Projects/techcertain/techcertaincsharp/Components/TCShared/PaymentGateways/Client/PxPay.cs:85 at TCShared.PxPay.GenerateRequest(TCShared.RequestInput入力) [0x00015] /ユーザー/ liam/Projects/techcertain/techcertaincsharp/Components/TC共有/ PaymentGateways /クライアント/ PxPay.cs:69私のWeb.Configで

私は要求タイムアウトとして次き:

<httpRuntime executionTimeout="43200" maxRequestLength="104856" requestValidationMode="2.0" /> 

私は、HttpWebRequestの上のタイムアウト値を変更しようとしたが、それいますまだタイムアウトしています。

これは何が起こっているのですか、どのように修正できますか?

答えて

8

なぜ私はこの問題が発生しているのか調べることができました。 Apacheの使用とはまったく無関係です。

私はPostgresqlへのデータベースアクセスにNpgsqlを使用しています。 Npgsqlには、2つのdll(Npgsql.dllとMono.Security.dll)が付属しています。不明な理由によりMono.Security.dllにより、Monoで実行中のHttpWebRequestがタイムアウトします。

Monoで実行中のMono.Security.dllは、Monoフレームワークに既に含まれているため、必要ありません。だから、私のbinディレクトリからHttpWebRequestのMono.Security dllを削除した後、現在動作しています。

この投稿への全文はhttp://mono.1490590.n4.nabble.com/The-request-timed-out-at-HttpWebRequest-EndGetResponse-td2218213.htmlです。

+0

ちょっと私は同じ問題を抱えていますが、Mono.Securityを削除しても問題は解決しませんでした。これは、2つの異なるLinuxインストールとmon on winでも一貫しています。他に何をしようと思うのですか? – Pablote

+0

こんにちは、別のバージョンのMonoを試すことができます。私は私のMac上でバージョン2.10.8を使用しており、HttpWebRequestが動作しています。モノをバージョン2.10.9にアップグレードしたとき、HttpWebRequestが機能しなくなったため、2.10.8にダウングレードしなければなりませんでした。 – startupsmith

+1

Mono.Securityを削除する。dllは私のためにこれを修正しましたが、ソースdll(プロジェクト参照先)とBin/Debug | Releaseフォルダを持っているフォルダから、前のビルドからコピーされているので、 。 – t9mike

関連する問題