gpt4 book ai didi

c# - 错误 : Cannot obtain Metadata; using WCF Test client, C#,并尝试实现 webhttpbinding 和 json

转载 作者:行者123 更新时间:2023-11-30 17:53:40 24 4
gpt4 key购买 nike

我收到了传说中的 Error: Cannot obtain Metadata from... 消息,特别是 http://localhost:1640/Service1.svc 我已经搜索过了stackoverflow 和谷歌,到目前为止,都没有帮助。我创建了一个新产品来简化它,但它仍然无法正常工作。所以我在这里寻求帮助。

我正在尝试设置一个使用 JSON 的 WCF 服务,这意味着我需要在 C# 中使用 webhttpbinding。当我使用 WCF 测试客户端时,出现上述元数据错误。我正在使用 Visual Studio Express 2010 和目标框架。我已经在这两天了,不明白为什么或出了什么问题。

如果有任何帮助,我将不胜感激。谢谢。

这是我的 web.config 文件:

<?xml version="1.0"?>
<configuration>

<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>

<services>
<service name="WcfService4.Service1"
behaviorConfiguration="jsonRestDefault">

<endpoint
name="jsonRestEndpoint"
behaviorConfiguration="RESTFriendly"
binding="webHttpBinding"
contract="IService1"
address="http://localhost:1640/Service1.svc"/>
</service>
</services>

<behaviors>
<serviceBehaviors>
<behavior name="jsonRestDefault">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="RESTFriendly">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

</configuration>

这是 IService1.cs 文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WcfService4
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(
Method = "GET",
UriTemplate = "players",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
List<Person> GetPlayers();
}

// Use a data contract as illustrated in the sample below to add composite types to service operations.
[DataContract]
public class Person
{
[DataMember]
public string FirstName { get; set; }

[DataMember]
public string LastName { get; set; }

[DataMember]
public int Age { get; set; }

public Person(string firstName, string lastName, int age)
{
this.FirstName = firstName;
this.LastName = lastName;
this.Age = age;
}
}
}

这是 Service1.svc.cs 文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Net;

namespace WcfService4
{
// 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
{
public List<Person> GetPlayers()
{
List<Person> players = new List<Person>();
players.Add(new Person ( "Peyton", "Manning", 35 ) );
players.Add(new Person ( "Drew", "Brees", 31 ) );
players.Add(new Person ( "Brett", "Favre", 38 ) );

return players;
}
}
}

最佳答案

看看这个link

内容如下:

WebHttpBinding is a REST-based binding - REST does not expose metadata like WSDL/XSD contrary to SOAP.

关于c# - 错误 : Cannot obtain Metadata; using WCF Test client, C#,并尝试实现 webhttpbinding 和 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com