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

ray_in_fog 2009-03-27 01:35:29
环境如下:
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完全权限,也还是这个错误。不知道怎么解决。

请指教。
...全文
286 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fieldtianye 2010-09-10
  • 打赏
  • 举报
回复
可以在浏览器输入 http:// + 服务器IP + :IIS分配的端口(注意:不是配置文件里的端口,因为是相对路径) + .svc文件名(.svc不可省略)

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

如果出现 LogService 服务,则表示服务在正常运行,否则失败,服务没有运行,也可以使用WcfTestClient.exe测试工具测试下,.net自带的
fieldtianye 2010-09-10
  • 打赏
  • 举报
回复
不要再页面上调用,页面有生命周期啊,到时自然关闭
添加项目->WCF服务应用程序,
或 在项目里添加 WCF服务,会有一个.svc文件,
右键点击->查看标记 Service="WCFIISHost.LogService"
WCFIISHost.LogService这个是服务类,改成你自己的,然后发布,注意权限,就可以了
  • 打赏
  • 举报
回复
添加引用 的时候要添加web引用
宝_爸 2009-03-27
  • 打赏
  • 举报
回复
参考:
http://msdn.microsoft.com/en-us/library/ms751519.aspx
宝_爸 2009-03-27
  • 打赏
  • 举报
回复
只是奇怪的用法,在IIS中使用self-host。

你应该直接创建一个web service的工程,使用IIS host的方法使用web service.

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧