我正在开发一个简单的wcf服务进行测试.当我使用本地IIS 7.5测试此服务时,它可以正常工作.但是当我在Web IIS中托管它时,我收到此错误:
无法找到作为ServiceHost指令中的Service属性值提供的类型'WcfServiceLibrary1.Service1',或者在配置元素system.serviceModel/serviceHostingEnvironment/serviceActivations中提供的类型'WcfServiceLibrary1.Service1'.
我的ServiceHost是:
<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLibrary1.Service1" %>
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题
Jac*_*Jac 39
因为我在为此查看过的任何问题中都找不到这个建议,请在此处添加我的案例:
当我手动更改文件MyService.svc.cs中的命名空间时,我遇到了这个问题,并且没有更改相应文件MyService.svc中的服务名称 - 结果证明它需要是Service ="namespace.classname".
And*_*tan 21
尝试使用程序集限定类型名称.
这是 [Fully Qualified Type Name], [Assembly]
在[Fully Qualified Type Name]最常见的情况下,在哪里YourNamespace.YourType
而且[Assembly],在最常见的情况下YourAssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
它比这更复杂(泛型类型,嵌套类型等) - 但在你的情况下不太可能如此.
如果您的应用程序使用默认的构建选项,那么我将冒险猜测该指令应该是这样的:
<%@ ServiceHost Language="C#" Debug="true"
Service="WcfServiceLibrary1.Service1,
WcfServiceLibrary1,
Version=1.0.0.0,
Culture=neutral,
PublicKeyToken=null" %>
Run Code Online (Sandbox Code Playgroud)
虽然你可能想要摆脱那里的换行.
此外,请确保您的dll实际已部署
小智 8
我只有在发布我的服务时才遇到同样的问题,但它在本地工作.
原来,该服务引用了一个未部署的DLL.这是一个超级特例,因为它是一个系统dll(System.Web.Helpers),因此项目甚至没有引用它,因此"Copy Local"没有设置为true.
IIS默认希望在虚拟目录中看到svc文件,在bin文件夹中看到二进制文件(如marc_s所述).
但是,WCF库项目的默认构建配置是在bin/Debug文件夹(或bin/Release)内构建.您可以在项目属性"构建"选项卡上将"输出路径"更改为"bin /".
今天改变这个为我解决了这个错误.
| 归档时间: |
|
| 查看次数: |
97670 次 |
| 最近记录: |