Kadang-kadang saya mendapatkan kesalahan berikut saat saya melakukan HttpWebRequest ke WebService. Saya juga menyalin kode saya di bawah ini.
System.Net.WebException: Tidak dapat terhubung ke server jarak jauh ---> System.Net.Sockets.SocketException: Tidak ada koneksi yang dapat dibuat karena mesin target secara aktif menolaknya 127.0.0.1:80 di System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress) di System.Net.Sockets.Socket.InternalConnect (EndPoint remoteEP) di System.Net.ServicePoint.ConnectSocketInternal (Boolean connectFailure, Socket s4, Socket s6, Socket & socket, IPAddress & address, status ConnectSocketState, IAsyncResult asyncResult, batas waktu habis Int32, pengecualian & pengecualian) --- Akhir jejak tumpukan pengecualian dalam --- di System.Net.HttpWebRequest.GetRequestStream ()
ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.PreAuthenticate = true;
request.Credentials = networkCredential(sla);
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";
request.Timeout = v_Timeout * 1000;
if (url.IndexOf("asmx") > 0 && parStartIndex > 0)
{
AppHelper.Logger.Append("#############" + sla.ServiceName);
using (StreamWriter reqWriter = new StreamWriter(request.GetRequestStream()))
{
while (true)
{
int index01 = parList.Length;
int index02 = parList.IndexOf("=");
if (parList.IndexOf("&") > 0)
index01 = parList.IndexOf("&");
string parName = parList.Substring(0, index02);
string parValue = parList.Substring(index02 + 1, index01 - index02 - 1);
reqWriter.Write("{0}={1}", HttpUtility.UrlEncode(parName), HttpUtility.UrlEncode(parValue));
if (index01 == parList.Length)
break;
reqWriter.Write("&");
parList = parList.Substring(index01 + 1);
}
}
}
else
{
request.ContentLength = 0;
}
response = (HttpWebResponse)request.GetResponse();
Jawaban:
Jika ini selalu terjadi, itu berarti mesin itu ada tetapi tidak ada layanan yang mendengarkan pada port yang ditentukan, atau ada firewall yang menghentikan Anda.
Jika itu terjadi sesekali - Anda menggunakan kata "kadang-kadang" - dan mencoba lagi berhasil, kemungkinan karena server memiliki 'backlog' penuh.
Ketika Anda menunggu untuk
accept
diedit pada soket mendengarkan, Anda ditempatkan di tumpukan. Tumpukan ini terbatas dan cukup pendek - nilai 1, 2 atau 3 tidak biasa - dan OS mungkin tidak dapat mengantri permintaan Anda untuk 'terima' untuk dikonsumsi.Backlog adalah parameter pada
listen
fungsi - semua bahasa dan platform pada dasarnya memiliki API yang sama dalam hal ini, bahkan C # satu . Parameter ini sering dapat dikonfigurasi jika Anda mengontrol server, dan kemungkinan membaca dari beberapa file pengaturan atau registri. Selidiki cara mengkonfigurasi server Anda.Jika Anda menulis server, Anda mungkin memiliki proses yang berat dalam menerima soket Anda, dan ini bisa lebih baik dipindahkan ke utas pekerja yang terpisah sehingga penerimaan Anda selalu siap untuk menerima koneksi. Ada berbagai pilihan arsitektur yang dapat Anda jelajahi yang memitigasi antrian klien dan memprosesnya secara berurutan.
Terlepas dari apakah Anda dapat meningkatkan simpanan server, Anda perlu mencoba kembali logika dalam kode klien Anda untuk mengatasi masalah ini - karena bahkan dengan simpanan yang panjang server mungkin menerima banyak permintaan lain pada port itu pada waktu itu.
Ada kemungkinan yang jarang terjadi di mana router NAT akan memberikan kesalahan ini jika port-portnya untuk pemetaan dapat dikuras habis. Saya pikir kita bisa membuang kemungkinan ini terlalu banyak, karena router memiliki 64K koneksi simultan ke alamat tujuan / port yang sama sebelum kelelahan.
sumber
Alasan yang paling mungkin adalah Firewall.
Artikel ini berisi serangkaian alasan, yang mungkin berguna bagi Anda.
Dari artikel itu, kemungkinan alasannya bisa:
sumber
Ini terjadi pada saya juga .. Kadang-kadang ketika saya membuka proyek saya kesalahan ini muncul yang membuat frustrasi. Masalahnya adalah kadang-kadang nomor port layanan web berubah secara tak terduga.
Masalah ini biasanya terjadi ketika Anda memiliki lebih dari satu salinan proyek
Proyek saya memanggil layanan Web dengan nomor port tertentu yang saya tetapkan di file Web.Config dari file proyek utama saya. Ketika nomor port berubah secara tak terduga, browser tidak dapat menemukan layanan Web dan melemparkan kesalahan itu.
Saya memecahkan ini dengan mengikuti langkah-langkah di bawah ini: (Visual Studio 2010)
Saya harap ini akan menyelesaikan masalah.
Bersulang :)
sumber
LocalHost:2532
untuk saya. Ternyata itu diatur seperti itu oleh pemilik sebelumnya di area yang Anda tentukan. Sekarang setelah misteri itu jelas, itu membuat beberapa hal lain menjadi kurang misterius. Terima kasih!Saya pikir, Anda perlu memeriksa pengaturan proxy Anda di "opsi internet". Jika Anda menggunakan aplikasi proxy / 'sembunyikan ip', masalah ini dapat terjadi.
sumber
Saya memiliki masalah yang sama. Masalahnya adalah saya tidak memulai server selenium. Saya telah mengunduh server selenium dan saya memulainya. Setelah memulai server selenium, masalah hilang dan semua bekerja dengan baik.
Lihat ini: http://coding-issues.blogspot.in/2012/11/no-connection-could-be-made-because.html
sumber
Pergi ke proyek WCF Anda - properties -> -> debugger -> hapus centang pada kotak centang
sumber
Saya memiliki kesalahan yang sama dengan layanan WCF saya menggunakan Net TCP mengikat, tetapi diselesaikan setelah memulai layanan di bawah ini dalam kasus saya.
Net.Pipe.Listener.Adapter
Net.TCP.Listener.Adapter
Layanan Berbagi Port Net.Tcp
sumber
Ini benar-benar spesifik, tetapi jika Anda menerima kesalahan ini setelah mencoba terhubung ke database menggunakan mongo, apa yang berhasil bagi saya adalah menjalankan mongod.exe sebelum menjalankan mongo.exe dan kemudian koneksi berfungsi dengan baik. Semoga ini bisa membantu seseorang.
sumber
Saya menghadapi kesalahan yang sama karena ketika Server dan Klien Anda berjalan pada mesin yang sama, Klien memerlukan alamat ip server lokal bukan alamat ip Publik untuk berkomunikasi dengan server, Anda memerlukan alamat ip Publik hanya dalam kasus ketika Server dan Klien berjalan pada mesin yang terpisah, jadi gunakan alamat ip lokal dalam program klien untuk terhubung dengan server Alamat ip lokal dapat ditemukan menggunakan metode ini.
sumber
Saya mendapat kesalahan ini di aplikasi yang menggunakan AppFabric. Petunjuk itu mendapatkan
DataCacheException
jejak stack. Untuk melihat apakah ini masalah Anda, jalankan perintah PowerShell berikut:Jika salah satu dari kedua layanan ini dihentikan, maka Anda akan mendapatkan kesalahan ini.
sumber
Yah, saya menerima kesalahan ini hari ini di Windows 8 64-bit tiba-tiba, untuk pertama kalinya, dan ternyata my.ini saya telah direset, dan file bin / mysqld telah dihapus, di antara item lainnya dalam
"Program Files/MySQL/MySQL Server 5.6"
folder.Untuk memperbaikinya, saya harus menjalankan pemasang MySQL lagi, hanya menginstal server, dan menyalin versi terbaru dari file my.ini dari
"ProgramData/MySQL/MySQL Server 5.6"
, bernamamy_2014-03-28T15-51-20.ini
dalam kasus saya (tidak tahu bagaimana atau mengapa itu disalin di sana baru-baru ini) kembali ke"Program Files/MySQL/MySQL Server 5.6"
.Satu-satunya perubahan pada sistem sejak MySQL bekerja adalah pemasangan Tractor 2 Native Instruments 'dan kartu suara Traktor Audio 2, yang seharusnya tidak menyebabkan masalah ini, dan tidak ada orang lain yang menggunakan sistem selain saya. Jika ada yang tahu, akan lebih baik jika Anda berkomentar untuk mencegah hal ini bagi saya dan siapa pun yang telah menemukan ini.
sumber
Untuk referensi layanan dalam suatu solusi.
Mulai ulang stasiun kerja Anda
Bangun kembali solusi Anda
Pada titik ini, saya menerima pesan (Windows 7) untuk memungkinkan akses sistem. Kemudian referensi layanan diperbarui dengan benar tanpa kesalahan.
sumber
Saya ingin membagikan jawaban ini yang saya temukan karena penyebab masalahnya bukan firewall atau proses tidak mendengarkan dengan benar, itu adalah contoh kode yang disediakan dari Microsoft yang saya gunakan.
https://msdn.microsoft.com/en-us/library/system.net.sockets.socket%28v=vs.110%29.aspx
Saya mengimplementasikan fungsi ini hampir persis seperti yang tertulis, tetapi yang terjadi adalah saya mendapatkan kesalahan ini:
2016-01-05 12: 00: 48.075 [10] ERROR - Kesalahannya adalah: System.Net.Sockets.SocketException (0x80004005): Tidak ada koneksi yang dapat dibuat karena mesin target secara aktif menolaknya [fe80 :: caa: 745: a1da: e6f1% 11]: 4080
Kode ini akan mengatakan soket terhubung, tetapi tidak di bawah alamat IP yang benar, sebenarnya diperlukan untuk komunikasi yang tepat. (Disediakan oleh Microsoft)
Saya menulis ulang kode untuk hanya menggunakan IP valid pertama yang ditemukannya. Saya hanya peduli dengan IPV4 menggunakan ini, tetapi bekerja dengan localhost, 127.0.0.1, dan alamat IP sebenarnya dari kartu jaringan Anda, di mana contoh yang diberikan oleh Microsoft gagal!
sumber
Dalam kasus saya, beberapa domain berfungsi, sementara beberapa tidak. Menambahkan referensi ke Url proxy organisasi saya di web.config saya memperbaiki masalah ini.
sumber
Saya menerima kesalahan ini dari layanan referensi yang terletak di WCFHost dari tingkat web saya. Apa yang berhasil bagi saya mungkin tidak berlaku untuk semua orang, tetapi saya meninggalkan jawaban ini untuk mereka yang mungkin. Nomor port untuk WCFHost saya diperbarui secara acak oleh IIS, saya hanya perlu memperbarui rute akhir ke referensi svc di konfigurasi web saya. Masalah terpecahkan.
sumber
Dalam skenario saya, saya memiliki dua aplikasi:
sumber
Satu lagi kemungkinan -
Pastikan Anda mencoba membuka alamat IP yang sama dengan tempat Anda mendengarkan. Aplikasi server saya mendengarkan alamat IP mesin host menggunakan IPv6, tetapi klien berusaha untuk terhubung pada alamat IPv4 mesin host.
sumber
Dalam kasus saya ini disebabkan oleh penyebaran yang salah di mana pengaturan di web.config saya tidak dibuat.
Seorang kolega menjelaskan bahwa alamat IP dalam pesan kesalahan mewakili host lokal.
Ketika saya memperbaiki web.config saya kemudian menggunakan url yang benar untuk membuat panggilan server dan berfungsi.
Saya pikir saya akan memposting ini jika itu dapat membantu seseorang.
sumber
Menggunakan WampServer 64bit pada Windows 7 Home Premium 64bit saya mengalami masalah ini. Setelah berjam-jam eksperimen menjadi jelas bahwa semua yang diperlukan ada di my.ini untuk berkomentar satu baris. Kemudian itu bekerja dengan baik.
berkomentar 1 soket baris = mysql
Jika Anda meletakkan file / data / lama Anda di lokasi yang sesuai, WampServer akan menerima semuanya kecuali folder / mysql / yang ditulisnya. Jadi saya hanya mengimpor cadangan data / mysql / pengguna dari lingkungan pengembangan saya sebelumnya dan menjalankan FLUSH PRIVILEGES di jendela phpMyAdmin SQL. Bagus sekali. Pasti ada yang salah karena semuanya tidak semudah ini.
sumber
Saya sering mengalami masalah ini. Saya menemukan
SQL Server Agent
layanan tidak berjalan. Setelah saya memulai layanan secara manual, itu diperbaiki. Periksa apakah layanan berjalan atau tidak:services.msc
dan tekan enterSQL Server Agent
( Nama Instance )Jika
SQL Server Agent
tidak berjalan, klik dua kali layanan untuk membuka jendela properti. Kemudian klikStart
tombol. Semoga ini bisa membantu seseorang.sumber
Saya menemukan kesalahan ini dan membutuhkan waktu untuk menyelesaikannya. Dalam kasus saya, saya telah mengkonfigurasi https dan net.tcp sebagai binding IIS pada port yang sama. Jelas Anda tidak dapat memiliki dua hal pada port yang sama. Saya menggunakan perintah netstat -ap tcp untuk memeriksa apakah ada sesuatu yang mendengarkan pada port itu. Tidak ada yang mendengarkan. Menghapus ikatan yang tidak perlu (https dalam kasus saya) menyelesaikan masalah saya.
sumber
Itu adalah masalah konyol di pihak saya, saya telah menambahkan proxy default ke web.config saya untuk mencegat lalu lintas di Fiddler, dan kemudian lupa untuk menghapusnya!
sumber
Ada layanan yang disebut "SQL Server Browser" yang menyediakan informasi koneksi SQL Server ke klien.
Dalam kasus saya, tidak ada solusi yang ada yang berfungsi karena layanan ini tidak berjalan. Saya melanjutkan dan semuanya kembali bekerja dengan sempurna.
sumber
Saya menghadapi masalah ini hari ini. Mine adalah Asp.Net Core API dan digunakan
Postgresql
sebagai basis data. Kami telah mengonfigurasi basis data ini sebagai wadah Docker. Jadi langkah pertama yang saya lakukan adalah memeriksa apakah saya dapat mengakses database atau tidak. Untuk melakukan itu saya mencariPgAdmin
di awal karena saya sudah mengkonfigurasi yang sama. Mengklik pada aplikasi mengakibatkan akan mengarahkan Anda ke http://127.0.0.1:23722/browser/ . Di sana Anda dapat mencoba mengakses database Anda di menu sebelah kiri. Bagi saya, saya mendapatkan kesalahan seperti pada gambar di bawah ini.Masukkan kata sandi dan coba apakah Anda dapat mengaksesnya atau tidak. Bagi saya itu tidak berhasil. Karena ini adalah wadah Docker, saya memutuskan untuk me-restart desktop Docker saya, untuk melakukan itu klik kanan pada ikon buruh pelabuhan di task bar dan klik restart.
Sekali setelah me-restart Docker, saya bisa login dan melihat Database dan juga kesalahan hilang ketika saya me-restart aplikasi di Visual Studio .
Semoga ini bisa membantu.
sumber
mungkin karena masalah otorisasi; itulah yang terjadi pada saya. Jika Anda memiliki misalnya:
[Authorize("WriteAccess")]
atau[Authorize("ReadAccess")]
di bagian atas fungsi pengontrol Anda, cobalah untuk berkomentar.sumber
Bagi saya, saya ingin memulai mongo di shell (tidak relevan dengan konteks yang tepat dari pertanyaan, tetapi memiliki pesan kesalahan yang sama bahkan sebelum memulai mongo di shell)
Proses 'Layanan MongoDB' tidak berjalan di Layanan
Mulai cmd sebagai Administrator dan ketik,
Hanya untuk melihat MongoDB aktif dan menjalankan cukup ketik mongo, dalam cmd itu akan memberikan detail versi Mongo dan URL Koneksi Mongo
sumber
Saya baru saja menghadapi ini sekarang ...
Di sini, di ujung saya, saya memiliki 2 solusi Visual Studio terpisah (.sln) ... membuka masing-masing dalam contoh Visual Studio mereka sendiri.
Solusi 2 panggilan Kode 1 solusi. Masalahnya terkait dengan port yang ditugaskan untuk Solusi 1. Saya harus mengubah port pada solusi 1 ke yang lain dan kemudian Solusi 2 mulai bekerja lagi. Jadi pastikan Anda memeriksa port yang ditugaskan untuk proyek Anda.
sumber