当尝试通过Windows控制台使用Net Tcp频道托管我的WCF服务时,每次我想让我的服务都被发现时,我必须评论4行代码。
class Program
{
static void Main(string[] args)
{
using (ServiceHost host = new ServiceHost(typeof(MyLibrary.MyService)))
{
// The following four lines of code currently break the ability to update or recreate a reference to this service
// Configure the custom authorization policy which will invoke the custom role-permission model
**//List<IAuthorizationPolicy> policies = new List<IAuthorizationPolicy>();
//policies.Add(new CustomAuthorizationPolicy());
//host.Authorization.ExternalAuthorizationPolicies = policies.AsReadOnly();
//host.Authorization.PrincipalPermissionMode = PrincipalPermissionMode.Custom;**
// Instantiate the service listener
host.Open();
Console.WriteLine("The service is running and is listening on:" + Environment.NewLine);
// Iterate through all the configured service end points
foreach (ServiceEndpoint endPoint in host.Description.Endpoints)
{ // Do My Work
}
Console.WriteLine(Environment.NewLine + "Press any key to stop the service");
Console.ReadKey();
host.Close();
}
}
}
我可以评论这4行代码并使服务可被发现,添加和更新服务引用等,然后在完成后还原代码。
在制作方面,我通过Windows服务托管服务,所以实际上没有显示停止。
我试图找出为什么我每次都要评论这4行代码并且有办法解决这个问题,尽管我有办法绕过这个问题。任何提示都将是一个很大的帮助和赞赏。
答案 0 :(得分:0)
如果没有具体了解CustomAuthorizationPolicy的内容,将很难准确说出,但我最好的猜测是您的策略拒绝调用MEX端点,因为它们不符合您的授权要求。如果你说你正在检查角色,这很可能是因为默认情况下没有设置MEX端点来支持Windows身份验证,所以你会收到一个匿名呼叫,因此最终的IsInRole检查会失败。