C# WCF测试客户端提供正确的结果,但在Chrome中执行时不正确
我正在尝试构建我的第一个WCF服务。我现在有以下行为C# WCF测试客户端提供正确的结果,但在Chrome中执行时不正确,c#,wcf,web-services,rest,C#,Wcf,Web Services,Rest,我正在尝试构建我的第一个WCF服务。我现在有以下行为 当我运行我的WCF服务时,我可以发送输入并在测试客户端时获得正确的结果 当我键入http://localhost:12345/Service1.svc进入Chrome,我会得到一个页面 单击svcutil.exehttp://localhost:12345/Service1.svc?wsdl给了我一个XML 然而,当我输入时,我只得到一个空的响应。里面什么都没有,只有带有 namespace WcfService1 { [ServiceC
http://localhost:12345/Service1.svc
进入Chrome,我会得到一个页面svcutil.exehttp://localhost:12345/Service1.svc?wsdl
给了我一个XML
namespace WcfService1
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate = "/test/{indata}",
ResponseFormat = WebMessageFormat.Xml)]
String Ping(String indata);
}
}
从我的实现中可以看出,如下所示
[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
public class Service1 : IService1
建议的web.config不起作用,所以我尝试将指针与结合使用来发布元数据(不管是什么)。我的配置文件与后一个链接中的配置文件非常相似(只是我已删除了诊断部分)。您可以尝试以下操作:
使用ServiceBehavior属性标记服务实现
<services>
<service name="WcfService1.Service1">
<endpoint binding="webHttpBinding" contract="WcfService1.IService1" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior>
<webHttp />
</behavior>
</endpointBehaviors>
...
</behaviors>
在web.config中添加/修改以下内容以保留现有数据:
localhost/Service1.svc/inputData
...
这些步骤使其正常工作。要使用使REST正常工作,您的web.config需要包含以下内容:
要在浏览器中不包含所有xml的情况下获取输出,请添加以下内容:
要允许访问服务元数据(需要轻松创建代理),请将以下内容添加到行为元素:
就我个人而言,我更喜欢老式配置,即显式配置端点,如下所示:
最后,您可以使用WCF服务配置编辑器使用gui进行配置。您可以在VisualStudio的“工具”菜单上找到它。打开后,用它打开项目的web.config并开始编辑。我相信WCF测试客户端是在SOAP上运行的。它更多地测试了你在为某件事服务的事实,而不是你在为你想要得到的东西服务
根据我的经验,你得到的空身体只是一条错误信息。但是,在某些情况下,例如跨域调用(不确定它是否是正确的名称,也不确定它是否是可能问题的完整列表),当您使用JavaScript中的XDomainRequest对象(与通常的XmlHttpRequest相反)时,响应为空是错误消息的结果
您是否尝试检查状态代码?200行还是更大的
我相信您已经在社交MSDN上提出了类似的问题,并且在如何形成代码方面存在一些混乱。让我回顾一下下面的要点
Web.config
...
服务-描述服务性质的标记内容
行为-描述服务和端点行为的标记内容
现在可以使用以下URL检索响应
您的服务是托管在IIS还是控制台应用程序中?
localhost/Service1.svc/inputData