我想在.NET 3.5桌面应用程序中嵌入REST API。在该框架版本上,只有一个选择:自托管WCF。
但是我似乎无法使其仅在本地主机上侦听。
启动时,该应用尝试尝试为http://+:8000
进行url保留,但失败,并显示System.ServiceModel.AddressAccessDeniedException
,因为我没有以管理员权限运行它。
我希望它仅保留http://localhost:8000
,从而避免需要管理员权限。
使用HostNameComparisonMode.Exact
似乎没有任何改变。
这就是我尝试过的:
using Myservice;
using System;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Web;
namespace consolehost1
{
class Program
{
static void Main(string[] args)
{
//Use exact hostname comparison mode
WebHttpBinding binding = new WebHttpBinding();
binding.HostNameComparisonMode = HostNameComparisonMode.Exact;
WebServiceHost host = new WebServiceHost(typeof(Service1), new Uri("http://localhost:8000/"));
ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(IService1), binding, "some-endpoint");
//The host still tries to get a reservation for http://+:8000 and not just http://localhost:8000
host.Open();
}
}
}
我该怎么办?
答案 0 :(得分:-1)
以下命令可以解决问题吗?
netsh http add urlacl url = http://+:8000/MyUri user = DOMAIN \ user
httpcfg设置urlacl / u {http://URL:Port/ | https://URL:Port/} / a ACL
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/configuring-http-and-https
https://docs.microsoft.com/en-us/windows/desktop/http/add-urlacl
随时让我知道问题是否仍然存在。