Saya seorang pemula di WCF, tetapi mencoba untuk meningkatkan pengalaman saya. Dan pada langkah pertama saya menghadapi masalah. Saya menciptakan layanan WCF paling sederhana. Daftar kode: (semua kode dalam satu file)
using System;
using System.ServiceModel;
namespace EssentialWCF
{
[ServiceContract]
public interface IStockService
{
[OperationContract]
double GetPrice(string ticker);
}
public class StockService : IStockService
{
public double GetPrice(string ticker)
{
return 94.85;
}
}
class Service
{
static void Main(string[] args)
{
ServiceHost serviceHost = new ServiceHost(typeof(StockService),
new Uri("http://localhost:8000/HelloWCF"));
serviceHost.AddServiceEndpoint(typeof(IStockService), new BasicHttpBinding());
serviceHost.Open();
Console.WriteLine("To continue press ENTER");
serviceHost.Close();
}
}
}
Itu akan menjadi layanan yang memberi saya nomor melalui konsol. Tapi debug beri saya pengecualian: (bukan nomor :))
HTTP tidak dapat mendaftarkan URL http: // +: 8000 / HelloWCF / . Proses Anda tidak memiliki hak akses ke namespace ini (lihat http://go.microsoft.com/fwlink/?LinkId=70353 untuk detailnya).
Pernahkah Anda menghadapi situasi yang sama? Saya akan senang melihat setiap saran.
Jawaban:
Sayangnya tautan dalam teks pengecualian, http://go.microsoft.com/fwlink/?LinkId=70353 , rusak. Namun, ini digunakan untuk mengarah ke http://msdn.microsoft.com/en-us/library/ms733768.aspx yang menjelaskan cara mengatur izin.
Ini pada dasarnya memberitahu Anda untuk menggunakan perintah berikut:
netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user
Anda dapat memperoleh bantuan lebih lanjut tentang detail menggunakan bantuan
netsh
Sebagai contoh:
netsh http add ?
Memberi bantuan pada
http add
perintah.sumber
COMPUTER_NAME\USER_NAME
perintah di atas.netsh http add urlacl url=http://+:80/ user=DOMAIN\user
jika Anda ingin memberikan hak akses akun ke ruang nama apa pun di port.Saya menutup Visual studio IDE dan membukanya kembali dengan mengklik kanan ikon Visual Studio dan mengatakan "Jalankan sebagai Administrator", Lalu ketika saya menjalankan host, Itu berhasil !!!
sumber
Klik kanan pada Visual Studio> Jalankan sebagai Administrator> Buka proyek Anda dan jalankan layanan. Ini adalah masalah terkait hak istimewa.
sumber
Anda memerlukan hak istimewa Administrator untuk akun Anda jika mesin Anda di jaringan area lokal maka Anda menerapkan hak istimewa administrator untuk Pengguna Anda yang lain, Anda harus memulai ide sebagai Administrator ...
sumber
Hal sederhana yang perlu Anda lakukan adalah menutup lingkungan Visual Studio Anda dan membukanya lagi dengan menggunakan 'Run as administrator'. Sekarang seharusnya berhasil dijalankan.
sumber
Di Windows Vista dan yang lebih baru, hal-hal layanan HTTP WCF akan menyebabkan pengecualian yang Anda sebutkan karena akun terbatas tidak memiliki hak untuk itu. Itulah alasan mengapa itu berfungsi ketika Anda menjalankannya sebagai administrator.
Setiap pengembang yang masuk akal harus menggunakan akun RESTRICTED daripada sebagai Administrator, namun banyak orang salah jalan dan itulah mengapa ada begitu banyak aplikasi di luar sana yang PERMINTAAN meminta izin admin ketika mereka tidak benar-benar diperlukan. Bekerja dengan cara malas menghasilkan solusi yang malas. Saya harap Anda masih bekerja di akun terbatas (selamat saya).
Ada alat di luar sana (dari 2008 atau lebih) yang disebut NamespaceManagerTool jika saya ingat dengan benar yang seharusnya memberikan izin pengguna terbatas pada URL layanan yang Anda tetapkan untuk WCF. Saya belum pernah menggunakan itu ...
sumber
Kode sampel Anda tidak akan berfungsi seperti yang ditunjukkan karena Anda lupa menyertakan
Console.ReadLine()
sebelumserviceHost.Close()
baris. Itu berarti tuan rumah dibuka dan kemudian segera ditutup.Selain itu, sepertinya Anda memiliki masalah izin pada mesin Anda. Pastikan Anda masuk sebagai akun administrator di mesin Anda. Jika Anda seorang administrator maka mungkin Anda tidak menjalankan Layanan Penerbitan Web Luas Dunia (W3SVC) untuk menangani permintaan HTTP.
sumber
Sementara saya bisa menyelesaikan masalah ini di satu komputer mengikuti solusi pengguna lain, perintah
netsh
itu tidak menyelesaikan masalah di salah satu komputer saya dan meskipun pengguna saat ini memiliki hak administrator saya masih mendapatkan "HTTP tidak dapat mendaftarkan URL .... Proses Anda tidak memiliki hak akses ke namespace ini ". Jadi saya membagikan solusi saya jika Anda masih belum bisa bekerja dengan solusi lain juga.Setelah juga mencoba memberikan izin menulis kepada pengguna di direktori fisik situs web saya dan tidak berhasil, akhirnya saya memutuskan untuk mencoba mengubah pengaturan IIS .
Seperti yang ditunjukkan gambar di bawah ini, saya mengkonfigurasi Kredensial Jalur Fisik situs web saya untuk terhubung sebagai pengguna tertentu, yang merupakan akun admin dengan DOMAIN \ nama pengguna dan kata sandi, dan ini cukup untuk membuat kesalahan menghilang.
sumber
Tutup iis express dan semua browser (jika url dibuka di salah satu browser). Juga buka IDE studio visual dalam mode admin. Ini telah menyelesaikan masalah saya.
sumber