我有一个非常简单的.svc文件(VSTOService.svc),用于在VSTO中提供的一些Web服务:
<%@ ServiceHost Language="C#"
Debug="true" Service="MyCompany.Communications.VSTOService"
Factory = "MyProject.Communications.IocServiceHostFactory"
CodeBehind="VSTOService.cs"%>
此文件位于Communications项目中,该项目是我的解决方案中的12个项目之一。只要 该文件在VS源代码编辑器中打开,整个解决方案编译得很好。但是,如果文件已关闭,则会出现编译错误。
当我自己编译Communications项目时,我遇到了同样的问题,有两个编译错误:
逐字说明符后的关键字,标识符或字符串:@
命名空间不能直接包含诸如字段或方法
显然,我没有在.svc文件中指定名称空间,但为了以防万一,我还检查了项目中的两个类。他们很好。我还尝试删除@和“ServiceHost”之间的空格,但VS坚持在保存文件时将其重新放入。 (当我的软件/硬件让我沮丧时,我讨厌它!)
那么,是什么造成了这种奇怪的行为?
答案 0 :(得分:1)
<% @ServiceHost Language="C#"
Debug="true" Service="MyCompany.Communications.VSTOService"
Factory = "MyProject.Communications.IocServiceHostFactory"
CodeBehind="VSTOService.cs"%>
将@
标记为Service <% @ServiceHost
,并希望您的错误得到解决
答案 1 :(得分:1)
确保在创建* .svc文件时不创建* .svc.cs文件。如果是,删除它并从@ServiceHost
中删除CodeBehind属性答案 2 :(得分:0)
我看到我的svc文件就像
<%@ ServiceHost Language="C#" Debug="true" Service="MessageProcessor.Async" %>
<a href="Msg.svc">Msg.svc</a>
不知道锚标记是如何插入servicehost标记下面的,这导致了问题。 删除锚标记()后,它修复了“命名空间不能直接包含诸如字段或方法之类的成员”的问题