我真的很抱歉再次提出这个问题。有类似的帖子,但没有一个解决方案适合我。
我在VisualStudio2010中创建了一个新的WCF服务项目。它创建了一个IService1.cs,Service1.svc和Service1.svc.cs
因此,当我尝试调试/启动服务时,出现以下错误。我正在运行Win7 x64。我正在使用集成的VisualStudio开发服务器(右键单击项目 - >转到页面“Web”)。
类型'Projector.Service1',作为Service属性值提供 在ServiceHost指令中,或在配置元素中提供 system.serviceModel / serviceHostingEnvironment / serviceActivations可以 找不到。
任何想法如何解决这个问题而不在IIS中运行它?
提前致谢。
Service1.svc只包含一行:
<%@ ServiceHost Language="C#" Debug="true" Service="Projector.Service1" CodeBehind="Service1.svc.cs" %>
Service1.svc.cs包含一个自动生成的类:
namespace Projector
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
public class Service1 : IService1
这是Web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
答案 0 :(得分:2)
AFAIK,如果你不使用IIS,那么svc是没用的。在IIS之外,所谓的自托管方法,需要你编写类似这样的东西,其中HelloWorldWcfServiceMessage是你实现服务契约的类型。另外,不要忘记为服务器配置端点,并确保允许您在配置的端口上打开服务。您可以在Windows服务或控制台程序中使用以下代码(更适合测试和调试)。希望有所帮助,我的问题是对的。
...
this.serviceHost = new ServiceHost(typeof(HelloWorldWcfServiceMessage));
this.serviceHost.Open();
...
public class HelloWorldWcfServiceMessage : IHelloWorldWcfServiceMessage
{
}
[ServiceContract(Namespace = "http://HelloWorldServiceNamespace", Name = "PublicHelloWorldWCFService")]
public interface IHelloWorldWcfServiceMessage
{
[OperationContract]
string HelloWorldMessage(string name);
}
答案 1 :(得分:0)
我认为这些名字存在一些混淆。
在SVC中你写道: 代码隐藏= “Service1.svc.cs” 但是你说你的文件名是Service.svc.cs(没有1)。
答案 2 :(得分:0)
解决了此问题
这就是在IIS 8上发布WCF服务
所有学分归GyörgyBalássy所有
WCF服务不能在具有默认配置的IIS 8上运行,因为Web服务器不知道如何处理针对.svcჱles的传入请求。您可以分两步教授它:
请在此处查看相同的答案。