加 Serializable() 在你暴露的类型之前
Serializable()
Serializable() Public Class YourType
放 Serializable 成 <>
Serializable
<>
如果使用.NET 4.0 WCF服务 - 确保Global.asax不在源目录中。如果是,它会在运行时被拾取并尝试在...中编译
在端点标记中将绑定类型从wsHttpbinding更改为basichttp绑定,从元数据端点标记中的wsHttpbinding更改为mexhttpbinginding,有助于克服错误。谢谢...
我尝试过在网上提到的几个解决方案,遗憾的是没有任何成功。 在我的项目中,我为每个服务都有两个接口(xml / json)。添加mex端点或绑定配置根本没有帮助。 但是,我注意到,只有在运行带有* .svc.cs或* .config文件的项目时才会出现此错误。当我运行带有IService.cs文件的项目(定义了接口)时,添加服务时没有任何错误。这真的很奇怪,我认为结论是Visual Studio 2013中的错误。 我在几台机器上重现了相同的行为(甚至在Windows Server机器上)。 希望这有助于某人。
将此添加到web.config文件并根据您的服务名称和合同名称进行配置。
<behaviors> <serviceBehaviors> <behavior name="metadataBehavior"> <serviceMetadata httpGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors> <services> <service name="MyService.MyService" behaviorConfiguration="metadataBehavior"> <endpoint address="" <!-- don't put anything here - Cassini will determine address --> binding="basicHttpBinding" contract="MyService.IMyService"/> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services>
请在Service.svc中添加
using System.ServiceModel.Description;
希望它能帮到你。
在我的情况下,我收到此错误,因为没有启用选项(HttpActivation)。
该物业 IsOneWay=true 在界面的操作合同中可能是真的。 删除该属性以消除此错误。
IsOneWay=true
的 FYI 强> - 的 您也可以从没有足够内存的计算机上获得此错误。 强> 我在一台运行16台机器的机器上出现了这个错误。我有一个运行6个演出的VM和很多内存密集型应用程序。关闭一些,这个问题就消失了。
我仍然在问题的标题中得到了错误
无法添加服务。可能无法访问服务元数据。确保您的服务正在运行并公开元数据
在使用WCF测试客户端时,我确实注意到有关内存的更大消息。
希望这有助于其他人。
如果您重命名svc文件,请确保您的标记是正确的。 您无需修改默认配置并按照以下步骤操作 1)右键单击转到SVC文件,然后选择查看标记 2)确保后面的代码和服务指向更正文件和类名。
在我的情况下,评论出来的
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
在web.config文件中抛出“无法添加服务。可能无法访问服务元数据。请确保您的服务正在运行并公开元数据”。
大多数情况下,这是由于较少的内存空间。首先检查然后尝试其他一些技巧。
我发现当我从ServiceContract属性中删除SessionMode时,问题就消失了。
例:
[ServiceContract(SessionMode=SessionMode.Required, CallbackContract=typeof(ICallbacks))] public interface IStringReverser { [OperationContract] string ReverseString(string value); }
至...
[ServiceContract()] public interface IStringReverser { [OperationContract] string ReverseString(string value); }