Pertanyaan Menjalankan OWIN Web API yang dikelola sendiri di bawah akun non-admin


Apakah mungkin untuk OWIN Web API yang dihosting sendiri untuk berjalan di bawah akun non-administrator? Saya sudah mencoba puluhan reservasi url dan tidak ada yang berhasil. Layanan gagal dimulai dengan "Akses ditolak". Ia bekerja ketika akun ditambahkan ke peran administrator tetapi saya tidak menginginkan itu. Kode di bawah ini berjalan di Win 7 framework 4.5.2.

//install-package microsoft.owin.hosting
//install-package Microsoft.Owin.Host.HttpListener

StartOptions options = new StartOptions();
options.Urls.Add("http://localhost:5000/");
//options.Urls.Add(string.Format("http://{0}:5000", Environment.MachineName));
//options.Urls.Add("http://+:5000/");
//options.Urls.Add("http://*:5000/");

using (WebApp.Start<WebAPISelfHostMinimal.Startup>(options))
{
    while (!Terminate)
    {
        await Task.Delay(10); //keep cpu from getting pegged
    }

    LogUtil.LogInfo("Terminating owin host.");
}

EDIT - ini berjalan di bawah akun Windows.

C:\>netsh http add urlacl http://+:5000/ user=mini2012\svcAPI

URL reservation successfully added

C:\>sc start apiservice
[SC] StartService FAILED 5:

Access is denied.

C:\>netsh http add urlacl http://*:5000/ user=mini2012\svcAPI

URL reservation successfully added

C:\>sc start apiservice
[SC] StartService FAILED 5:

Access is denied.

C:\>netsh http add urlacl http://localhost:5000/ user=mini2012\svcAPI

URL reservation successfully added

C:\>sc start apiservice
[SC] StartService FAILED 5:

Access is denied.

32
2017-07-26 23:23


asal


Jawaban:


Sepertinya masalahnya ada pada reservasi URL. Saya tidak membutuhkannya. Jika ada reservasi URL, itu hanya akan mencegah host owin dari mulai dengan kesalahan akses ditolak. Juga, port default untuk host owin adalah 5000. Jika ada proses "mati" yang masih berjalan di port itu, itu akan memblokir layanan Anda dari awal. Untuk memeriksa Anda dapat menjalankan netstat -a -b pada prompt perintah.


13
2017-08-03 00:19



Layanan Anda berjalan (kemungkinan besar) di bawah akun LocalSystem (SYSTEM). Akun ini tidak ada di kepala keamanan Semua Orang.

Singkatnya, untuk menyelesaikan ini, buat reservasi ruang nama untuk Anonim Logon atau ubah layanan Anda untuk berjalan di bawah akun Layanan Jaringan yang kebetulan berada di kepala Semua Orang.

Pilihan ketiga adalah, tentu saja, untuk membuat pengguna lokal / domain baru, membuat reservasi untuk itu dan memiliki layanan yang dijalankan di bawah akun ini. Tapi kemudian Anda harus khawatir tentang pengaturan izin keamanan yang tepat untuk itu, jadi saya akan pergi dengan salah satu dari dua opsi pertama.


5
2017-07-26 23:45



Hak admin tidak diperlukan untuk nilai port 5000 dan lebih tinggi


-1
2017-08-08 22:24