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