WCF碰到的一些问题

static ServiceHost myService = null; 

myService = new ServiceHost(typeof(Service1));

 myService.Open();

问题1

Service 'WcfServiceLibrary1.Service1' has zero application (non-infrastructure) endpoints. This might be because no configuration file was found for your application, or because no service element matching the service name could be found in the configuration file, or because no endpoints were defined in the service element.

 

出现这个问题的原因是因为没有给服务器(host)端配置config,在服务器端添加个config文件,从WCF那里把system.serviceModel节点复制到你添加的config文件里就可以解决了。

 

问题2

HTTP could not register URL http://+:8732/Design_Time_Addresses/WcfServiceLibrary1/Service1/. Another application has already registered this URL with HTTP.SYS.

 

出现这个问题的原因是从WCF服务里直接复制过来的,在服务那里已经被注册过了,而新写的服务器端又重新注册一遍,导致这样的问题,只需要把8732改为任何一个没有用的端口都可以。

至于如何WCF服务那里注册过,这里再打开就不行,不知道原因。如果有知道的高手,希望指教。

 

问题3

HTTP could not register   http://+:8581/Design_Time_Addresses/WcfServiceLibrary1/Service1/. Your process does 
not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details).

 

出现这个问题的原因是权限不够。

如果只是单机的系统管理员登陆是不会出现这个问题,当用域用户登录的时候会发生,

打开 程序-〉附件-〉命令提示符(Command Prompt Command Prompt )(注意需要右键命令提示符,悬在Run as administrator)

输入如下语句注册。

netsh http add urlacl url=http://+:8581/Design_Time_Addresses/WcfServiceLibrary1/Service1/ user=域名/用户名

 

可以用各种方式来创建服务器端,

假设用winform

 

 StartService();

label1.Text = "this service is runing";
 //StopService();

注意这个winform程序部署的时候config需要配置一个,

假设一个项目里有个3个工程,Service项目,主机项目,客户端项目

在调试状态的时候,客户端项目引用的是Service项目,

地址如:http://localhost:8732/Design_Time_Addresses/WcfServiceLibrary1/Service1/mex

但是主机项目里config配置的端口肯定不能是8732,所以导致出现这样问题,

调试状态没有问题,可以在部署环境,打开主机程序和客户端程序,但是在客户端操作的时候报错,无法找到主机,

这个是因为主机的config不是 8732,主要把主机的config配置里端口号改为8732就行了 。

你可能感兴趣的:(我的問題)