2009-06-10 14 views
9

Şirketim için, kredi kartı işlemlerini yetkilendirmek üzere bir 3. taraf ödeme önkoşullama motoru kullanan bir ASP.NET web hizmeti oluşturdum. Web hizmeti, ayrı bir uygulama sunucusunda barındırılır ve bir ActiveX nesnesi (.ocx uzantısı) aracılığıyla ödeme işleme sunucusuna bağlanır. Son zamanlarda, bir "IsAvaiable" denetimi kullanarak uygulama bağlantısı kurmaya çalıştığımda bir HRESULT: 0x80010105 (RPC_E_SERVERFAULT) özel durum oluşturuyor.HRESULT: 0x80010105 (RPC_E_SERVERFAULT) soru

Bu sorunu araştırmak için işe başlamak için iyi bir yer öneren var mı?

ActiveX kullanarak (ben ilk seçenek olacaktır satıcısına başvurarak biliyorum, ama biz teknik desteğe başvurun önce "Arka arkaya ördek" Benim olmasını istiyorum)

cevap

2

aynı hatayı (RPC_E_SERVERFAULT) yaşadım web servislerindeki nesneler. ActiveX nesnesi her kilitlendiğinde, IIS bu hatayı atar ve bu da nesnenin çökmesinin nedenini gizler (çünkü bizim için genellikle değerleri işlemek ve döndürmek için gereken geçersiz bir dosya yüklenirken çöküyordu).

ActiveX denetiminizin gerçek hatayı herhangi bir yerde günlüğe kaydetmiş olup olmadığını görmek için sistem günlüklerini vb. Kontrol ettiniz mi?

Eğer bariz bir şey göremiyorsanız, o zaman gerçek hatanın ne olduğunu ve herhangi bir yerde hatalarını günlüğe kaydettirmenin en iyi yolunu bulmak için teknik desteğiyle bağlantı kurmanızı tavsiye ederim.

+1

Web hizmeti sunucusunun olay günlüğünü kontrol ettim ve RPC_E_SERVERFAULT hatasıyla ilgili herhangi bir hata görmedim. Uygulama sunucusuna erişimim yok, belki orada bir şey bulabilirim. –

0

adplus'u, istisna her defasında bir bellek dökümü almasını sağlayabilirsiniz. Bu, sorunun hatalarını ayıklamak için kullanılabilir.

+0

Bellek dökümü nereden geliyor: IIS veya ActiveX nesnesi? –

+0

Bellek dökümleri, tekil modüller değil, uygulamadan gelir, bu nedenle IIS –

+0

Özel durum oluştuğunda aslında bir .DMP dosyası üretmez. Bakmam gereken başka türde bir dosya uzantısı var, bu bir bellek dökümü olarak düşünülebilir. –

2

Michael, üçüncü taraf Activex denetiminiz muhtemelen belleği doğru şekilde yönetmiyordur. Benim tahminimce, olması gerekmediğinde hafızanın bir kısmı üzerine yazılıyor. Bunun için bir düzeltme olup olmadığını öğrenmek için üçüncü taraf sağlayıcınıza danışın.

1

Bunun yığın taşması olduğunu biliyorum ve burada bir programlama yanıtı olmalı, ancak arızalı makinede hiçbir güncelleme veya yazılım değişikliğinden bahsetmiyorsunuz. Yazılım değişiklikleri olmasaydı, büyük olasılıkla bir donanım sorunu. RAM Başarısız, CPU'lar başarısız, donanım başarısız. Sistemi çevrimdışı duruma getirebilir ve donanımı test ederseniz muhtemelen bir diskin ya da bir bellek modülünün arızalandığını fark edeceksiniz (NIC belki de). Bu, satıcının yapacağı ilk adım olabilir, ancak bunu kendiniz yaparsanız, bunu kendi şartlarınızda yapabilir ve kendinize bir kaç saat boyunca servis ücretini güvence altına alabilirsiniz.

+0

Bu Anlamsız – Elmue

+0

@Elmue Eklemek için yapıcı bir şeyiniz var mı? Donanımı doğrulamak genellikle iyi bir adımdır ve kötü ram olduğuna şahit olduğum kriptografik imza doğrulama sorunları da dahil olmak üzere çeşitli hatalara neden olmuştur. Kripto başarısız olursa RPC bunun yüzünden başarısız olabilir.Bir satıcıyla iletişim kurarken tavsiye hakkında da soru soruldu, rutin donanım telefon ahizesi telefon görüşmelerinin aramayı bitirmek için kullandığı çok sayıda teknikten geçecek. – Sqeaky

+1

Birkaç RPC_E_SERVERFAULT hatası gördüm. Hiçbir zaman donanım değildi. Bu hatalar sadece bir COM sunucusunun çökmesi anlamına gelir. Bunun nedeni, çoğunlukla arabellek taşmaları veya boş göstergelerin okunması veya hatalı hata verilmesi gibi programlama hatalarıdır. Eğer RAM ile ilgili problemleriniz varsa, bluescreens'lara kadar farklı uygulamalarda (sadece bir sunucuda değil) çökmeler görürsünüz. Bir haşhaş probleminin sadece bir uygulamada çökmesine neden olması imkansızdır. – Elmue

0

Ayrıca COM nesnesi çöktü anlamına da gelebilir. Bu, Excel'de Excel'i çökerten bir makroyla gerçekleşmişti. COM nesnesinin (benim durumumda, bir Excel eklentisi) temsil ettiği uygulamayı yeniden çalıştırmayı deneyin ve çöküp çökmediğini veya bir hata oluşturup oluşturmadığını görün.