Saya mendapatkan kesalahan ini ketika saya mencoba untuk memulai layanan windows yang saya buat di C #:
Kode Saya sejauh ini:
private ServiceHost host = null;
public RightAccessHost()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
host = new ServiceHost(typeof(RightAccessWcf));
host.Open();
}
protected override void OnStop()
{
if (host != null)
host.Close();
host = null;
}
Perbarui # 1
Saya memecahkan masalah di atas dengan memberikan izin ke akun NETWORK SERVICE tetapi sekarang saya memiliki masalah lain:
Perbarui # 2
Layanan tidak dapat dimulai. System.InvalidOperationException: Layanan 'RightAccessManagementWcf.RightAccessWcf' tidak memiliki titik akhir aplikasi (non-infrastruktur). Hal ini mungkin karena tidak ada file konfigurasi yang ditemukan untuk aplikasi Anda, atau karena tidak ada elemen layanan yang cocok dengan nama layanan yang dapat ditemukan di file konfigurasi, atau karena tidak ada titik akhir yang ditentukan dalam elemen layanan. di System.ServiceModel.Description.DispatcherBuilder.EnsureThereAreNonMexEndpoints (deskripsi ServiceDescription) di System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost (deskripsi ServiceDescription, ServiceHostBase serviceHost) di System.ServiceModel.ServiceHostize.Suntime TimeSpan timeout) di System.ServiceModel.Channels.CommunicationObject.
sumber
Jawaban:
Saya menyadari posting ini sudah tua, tetapi tidak ada solusi yang ditandai dan saya hanya ingin menjelaskan bagaimana saya menyelesaikan ini.
Error 5: Access Denied
Kesalahan pertama diselesaikan dengan memberikan izin ke direktori keluaran keNETWORK SERVICE
akun.Started and then stopped
Kesalahan kedua tampaknya menjadi pesan umum ketika ada yang salah dengan layanan. Periksa Event Viewer (khususnya 'Windows Logs> Application') untuk pesan kesalahan yang sebenarnya.Dalam kasus saya, itu adalah pengaturan konfigurasi layanan yang buruk di app.config.
sumber
Komputer -> Kelola -> Layanan -> properti [layanan Anda]. Kemudian tab dengan informasi akun. Bermain dengan pengaturan tersebut, seperti menjalankan layanan dengan akun administrator atau lebih.
Itu berhasil untuk saya.
EDIT: Yang juga bisa menjadi masalah adalah, sebagian besar layanan dijalankan sebagai
LOCAL SERVICE
atauLOCAL SYSTEM
akun. Sekarang ketika Anda menjalankanC:/my-admin-dir/service.exe
dengan akun-akun itu tetapi mereka tidak diizinkan untuk mengeksekusi apa pun di direktori itu, Anda akan mendapatkannyaerror 5
. Jadi cari layanan yang dapat dieksekusi, RMB direktori -> Properti -> Keamanan dan pastikan bahwa akun tempat layanan dijalankan, ada dalam daftar pengguna yang diizinkan untuk memiliki kendali penuh atas direktori.sumber
Ini berhasil untuk saya.
sumber
Saya juga mendapat kesalahan yang sama, Ini diselesaikan dengan klik kanan pada Layanan> Properti> Masuk> masuk sebagai: Akun Sistem Lokal.
sumber
Pastikan
Path to executable
poin - poinnya benar-benar dapat dieksekusi (klik kanan service -> Properties -> tab General). Melalui PowerShell (dan sc.exe) Anda dapat menginstal layanan tanpa menunjuk ke eksekusi ... ahem.sumber
Saya mendapat solusinya:
sekarang Anda dapat mencoba memulai layanan.
sumber
Dalam kasus saya berikut ini tidak diperiksa.
sumber
Saya mendapatkan kesalahan ini karena saya salah membaca jawaban yang diterima dari sini: Buat layanan Windows dari yang dapat dieksekusi .
Karena
<path_to_service_executable>
, saya menggunakan jalur folder yang dapat dieksekusi, misC:\Folder
.Ini harus menjadi jalur yang dapat dieksekusi , misalnya
C:\Folder\Executable.exe
.sumber
Bagi saya - folder tempat layanan dijalankan, dan file di dalamnya, dienkripsi menggunakan opsi "Enkripsi" Windows. Menghapus itu dan - voila!
sumber
Kesalahan ini terjadi jika ada kesalahan dalam
OnStart
metode Anda . Anda tidak dapat membuka host secara langsung dalamOnStart
metode karena ia tidak akan benar-benar terbuka saat dipanggil, tetapi ia akan menunggu kontrol. Jadi, Anda harus menggunakan utas. Ini contoh saya.sumber
jika Anda memiliki kode kesalahan 5. akses ditolak maka mungkin dalam kode Anda layanan Anda mencoba untuk berinteraksi dengan beberapa file dalam sistem seperti menulis ke file log
buka
log on
tab pilih properti layanan dan centang opsi untuk mengizinkan layanan berinteraksi dengan desktop,sumber
Salah satu penyebab kesalahan ini adalah izin yang tidak memadai (Pengguna yang Diotentikasi) di folder lokal Anda. Untuk memberikan izin bagi 'Pengguna yang Diautentikasi' Buka tab keamanan di properti folder Anda, Edit dan Tambahkan grup 'Pengguna yang Diautentikasi' dan Terapkan perubahan.
Setelah ini selesai, saya dapat menjalankan layanan bahkan melalui akun layanan jaringan (sebelum ini saya hanya dapat menjalankan dengan akun sistem Lokal).
sumber
Saya memiliki layanan windows yang dihosting menggunakan OWIN dan TopShelf. Saya tidak bisa memulainya. Kesalahan yang sama - "Akses ditolak 5"
Saya akhirnya memberikan semua izin ke bin / Debug saya.
Masalahnya masih belum terselesaikan.
Jadi saya melihat log acara dan ternyata
Microsoft.Owin.Host.HttpListener
tidak termasuk dalam perpustakaan kelas yang berisi kelas start up OWIN.Jadi, pastikan Anda memeriksa log peristiwa untuk mengidentifikasi akar masalah sebelum mulai masuk ke perm, dll.
sumber
Dalam kasus saya, saya harus menambahkan 'Pengguna yang Diotentikasi' dalam daftar 'Nama Grup atau Pengguna' di folder tempat eksekusi diinstal.
sumber
Kode Anda mungkin berjalan dalam konteks keamanan pengguna yang tidak diizinkan untuk memulai layanan.
Karena Anda menggunakan WCF, saya menduga Anda berada dalam konteks LAYANAN JARINGAN.
lihat: http://support.microsoft.com/kb/256299
sumber
Gunakan Akun Sistem Lokal, bukan Akun Layanan Lokal di Pemasang Layanan.
Anda dapat melakukan ini baik dari melakukan perubahan di bawah ini dalam tampilan desain penginstal layanan Anda:
Properti Penginstal Proses Layanan -> Setel Akun ke Sistem Lokal.
atau dengan melakukan perubahan di bawah ini dalam file designer.cs dari penginstal layanan Anda:
sumber
Klik kanan pada
service
in service.msc dan pilihproperty
.Anda akan melihat jalur folder di bawah
Path to executable
seperti C: \ Users \ Me \ Desktop \ project \ Tor \ Tor \ tor.exeArahkan ke C: \ Users \ Me \ Desktop \ project \ Tor dan klik kanan pada Tor.
Pilih
property
,security
,edit
dan kemudianadd
. Di kolom teks enterLOCAL SERVICE
, klik ok lalu centang kotaknyaFULL CONTROL
Klik
add
lagi lalu masukNETWORK SERVICE
, klikok
, centang kotakFULL CONTROL
Lalu klik ok (di bagian bawah)
sumber
Lihat
Process Utilities > Process monitor
dari http://www.sysinternals.com .Ini adalah alat yang memungkinkan Anda memantau apa yang dilakukan suatu proses. Jika Anda memantau proses layanan ini, Anda akan melihat akses ditolak di suatu tempat, dan pada sumber daya apa akses ditolak diberikan.
sumber
Untuk kesalahan 5, saya melakukan kebalikan dari solusi di atas. "Kesalahan pertama 5: Kesalahan Akses Ditolak diselesaikan dengan memberikan izin ke direktori keluaran ke akun LAYANAN JARINGAN."
Saya mengubah milik saya ke akun lokal, bukan akun layanan jaringan, dan karena saya masuk sebagai administrator, itu berfungsi
sumber
Jika Anda mendapatkan kesalahan ini pada mesin server coba berikan akses ke folder yang Anda dapatkan exe layanan windows yang sebenarnya. Anda harus pergi ke tab keamanan dan memilih Layanan Lokal sebagai pengguna dan harus memberikan akses penuh. Anda juga harus melakukan hal yang sama untuk exe.
sumber
Saya telah memantau sppsvc.exe menggunakan monitor proses dan menemukan bahwa itu mencoba untuk menulis ke kunci HKEY_LOCAL_MACHINE \ SYSTEM \ WPA. Setelah memberikan izin ke LAYANAN JARINGAN pada kunci ini, saya dapat memulai layanan dan Windows tiba-tiba mengenali bahwa itu diaktifkan lagi.
sumber
Saya tidak sengaja mengatur layanan saya untuk dijalankan sebagai
Local service
solusi untuk beralih keLocal System
sumber
Setelah membenturkan tangan saya ke meja saya selama beberapa jam mencoba mencari tahu, entah bagaimana metode "Utama" saya dikosongkan dari kodenya!
Solusi lain yang saya temukan:
Memastikan nama layanan di dalam InitializeComponent () cocok dengan properti nama layanan penginstal
Dan restart server yang bagus tidak ada salahnya
Szhlopp
sumber
Dalam kasus mungkin sistem kehabisan ruang kosong pada disk lokal.
sumber
Saya mengalami masalah ini hari ini pada layanan yang saya kembangkan, dan tidak ada saran lain tentang pertanyaan ini yang berhasil. Dalam kasus saya, saya memiliki ketergantungan .dll yang hilang di folder tempat layanan dijalankan.
Ketika saya menambahkan dependensi, masalahnya hilang.
sumber
Dalam kasus saya, saya menyimpan proyek di desktop dan untuk mengakses desktop kami perlu menambahkan izin ke folder jadi saya cukup memindahkan folder proyek saya ke direktori C: \ sekarang berfungsi seperti pesona.
sumber
Saya tidak tahu apakah jawaban saya masuk akal bagi banyak orang, tetapi saya juga menghadapi masalah yang sama dan solusinya sangat sederhana. Yang harus saya lakukan adalah membuka program yang saya gunakan untuk menjalankan kode sebagai administrator. (klik kanan -> Jalankan sebagai Administrator).
Itu saja.
sumber
Seperti yang ditunjukkan oleh popup kesalahan ini terkait dengan izin. Jadi jalankan layanan sebagai akun "LocalSystem".
Untuk melakukan hal yang sama, Klik Kanan
serviceProcessInstaller -> Properties -> Account
dan setel ke"LocalSystem"
alih-alih default"User"
. Instal layanan dan voila.sumber
periksa log peristiwa windows untuk pesan kesalahan rinci. Saya menyelesaikan hal yang sama setelah memeriksa log peristiwa.
sumber
Saya mengalami masalah ini pada layanan yang saya terapkan, dan tidak ada saran lain tentang pertanyaan ini yang berhasil. Dalam kasus saya, itu karena .config (xml) saya tidak valid. Saya membuat kesalahan salin dan tempel saat menyalin dari qualif ke prod.
sumber