当前位置:编程学习 > C#/ASP.NET >>

如何开启编译在bin中的WCF服务?

环境如下:
web站点引用dll
在dll中有wcf服务的类的实现,例如

[ServiceContract]
public interface ICommunictionService
{
    [OperationContract]
    void DoWork();
}

public class CommunictionService : ICommunictionService
{
    public void DoWork()
    {
    }
}

对于WCF的配置,没有使用app.config,而是自己通过编程方式配置,大致如下
ServiceHost host=new ServiceHost();
然后创建WSHttpBinding binding
并对其进行配置
然后添加终结点
host.AddServiceEndpoint(typeof(ICommunictionService), binding, serviceAddress);
这里的serviceAddress使用了网站的域名http://www.xxx.xom/WCF/CommunictionService/并且这个地址也用在了元数据说明ServiceMetadataBehavior中

最后再站点的页面上调用host.Open()方法

报错“HTTP 无法注册 URL http://+:80/WCF/CommunictionService/。进程不具有此命名空间的访问权限(有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=70353)。”
可是我还是不想吧WCF服务的实现放在AppCode中。
在WinForm中以上做法不会报错,应用程序会自己host一个http服务器,但是在IIS中失败,我的VS2008是管理员权限运行的,站点所在目录设置了Everyone完全权限,也还是这个错误。不知道怎么解决。

请指教。 --------------------编程问答-------------------- --------------------编程问答-------------------- 只是奇怪的用法,在IIS中使用self-host。

你应该直接创建一个web service的工程,使用IIS host的方法使用web service. --------------------编程问答-------------------- 参考:
http://msdn.microsoft.com/en-us/library/ms751519.aspx --------------------编程问答-------------------- 添加引用 的时候要添加web引用 --------------------编程问答-------------------- 不要再页面上调用,页面有生命周期啊,到时自然关闭
添加项目->WCF服务应用程序,
或 在项目里添加 WCF服务,会有一个.svc文件,
右键点击->查看标记  Service="WCFIISHost.LogService"
WCFIISHost.LogService这个是服务类,改成你自己的,然后发布,注意权限,就可以了 --------------------编程问答-------------------- 可以在浏览器输入 http:// + 服务器IP + :IIS分配的端口(注意:不是配置文件里的端口,因为是相对路径) + .svc文件名(.svc不可省略)

如:http://192.168.1.100:80/Service.svc

如果出现 LogService 服务,则表示服务在正常运行,否则失败,服务没有运行,也可以使用WcfTestClient.exe测试工具测试下,.net自带的
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,