Saya memiliki aplikasi ASP.NET yang berjalan di server klien (W2k3, IIS6, .NET 2.0). FWIW, ini adalah contoh Uji , belum dipindahkan ke Produksi . Jadi itu tidak berjalan di bawah SSL, load balancing, dll.
Ketika saya mengakses salah satu halaman di server mereka dari kantor kami, halaman tersebut terkena sekali. Memeriksa log IIS (c: WINDOWS \ system32 \ LogFiles \ W3SVC1) menunjukkan GET untuk halaman itu, kemudian saya menekan tombol pada halaman dan file log menunjukkan POST. Sejauh ini tampaknya berfungsi dengan baik.
Sekarang ketika saya jauh ke jaringan klien dan mengakses halaman dari salah satu mesin lokal mereka, file log menunjukkan GET, kemudian saya menekan tombol pada halaman dan log menunjukkan dua POST pada detik yang sama. Yang pertama menunjukkan status (sc-status, sc-substatus, sc-win32-status) 200 0 64, yang kedua menunjukkan 200 0 0.
Dalam file log, kedua POST identik. Pada dasarnya log terlihat seperti ini (kecuali saya menyembunyikan beberapa data):
#Pasangan: waktu-tanggal s-ip cs-metode cs-uri-stem cs-uri-query s-port cs-nama pengguna c-ip cs (Pengguna-Agen) sc-status sc-substatus sc-win32-status 2009-08-11 20:19:32 xxxx DAPAT /File.aspx - 80 - yyyy Mozilla / 4.0 + (kompatibel; + MSIE + 8.0; + Windows + NT + 6.0; + WOW64; + Trident / 4.0; + SLCC1; + .NET + CLR + 2.0.50727; +. NET + CLR + 3.5.21022; +. NET + CLR + 3.5.30729; +. NET + CLR + 3.0.30618; + MDDR; + OfficeLiveConnector.1.4; + OfficeLivePatch .0.0) 200 0 0 2009-08-11 20:19:45 xxxx POST /File.aspx - 80 - yyyy Mozilla / 4.0 + (kompatibel; + MSIE + 8.0; + Windows + NT + 6.0; + WOW64; + Trident / 4.0; + SLCC1; + .NET + CLR + 2.0.50727; +. NET + CLR + 3.5.21022; +. NET + CLR + 3.5.30729; +. NET + CLR + 3.0.30618; + MDDR; + OfficeLiveConnector.1.4; + OfficeLivePatch .0.0) 200 0 64 2009-08-11 20:19:45 xxxx POST /File.aspx - 80 - yyyy Mozilla / 4.0 + (kompatibel; + MSIE + 8.0; + Windows + NT + 6.0; + WOW64; + Trident / 4.0; + SLCC1; + .NET + CLR + 2.0.50727; +. NET + CLR + 3.5.21022; +. NET + CLR + 3.5.30729; +. NET + CLR + 3.0.30618; + MDDR; + OfficeLiveConnector.1.4; + OfficeLivePatch .0.0) 200 0 0
Masalahnya adalah , halaman tersebut terkena dua kali. Database melakukan operasi untuk permintaan pertama, kemudian permintaan kedua mendeteksi bahwa operasi duplikat sedang dilakukan dan melempar pesan kesalahan. Para pengguna berpikir operasi mereka gagal, tetapi sebenarnya berhasil.
Deskripsi kesalahan sc-win32-status 64 adalah: "Nama jaringan yang ditentukan tidak lagi tersedia." Ini membuat saya percaya, mengingat bahwa kedua permintaan POST menunjukkan status HTTP 200, bahwa server berhasil dalam melayani permintaan, tetapi klien tidak pernah diberitahu dan mengirim kembali permintaan.
Bagaimana saya bisa memecahkan masalah ini?
Adakah ide yang dapat menyebabkan perilaku ini hanya di jaringan internal mereka?
Saya harus menyebutkan, ini terjadi di dua situs klien yang terpisah, tetapi tidak terjadi di enam situs klien kami yang lain, atau di kantor kami, atau menghubungkan ke salah satu dari delapan klien kami melalui web.
Apa yang membuat ini dapat direproduksi 100% dari waktu di jaringan lokal mereka tetapi 0% dari waktu di tempat lain?
Pembaruan: Saya menemukan sejumlah kecil permintaan POST duplikat memiliki sc-win32-status 995 bukannya 64 seperti yang dilaporkan semula. Deskripsi kesalahan sc-win32-status = 995 adalah: "Operasi I / O telah dibatalkan karena keluar dari utas atau permintaan aplikasi." Ini tidak masuk akal (mengingat saya memiliki akses penuh ke kode). Saya masih tidak mengerti bagaimana atau mengapa masalah ini terjadi, tetapi kode kesalahan yang baru membuat saya percaya bahwa ini mungkin bukan masalah jaringan dan saya sekarang sedang menyelidiki kemungkinan bug kode acak.