1

我正在尝试调整现有的 WebApi/MVC4 应用程序以使用 Breeze 查找。

目前我通过以下方式检索我的 DTO

    [HttpGet]
    public IQueryable<ThingDto> GetThings()
    {

        var channelFactory = ThingServiceConfiguration.CreateChannelFactory();
        _serviceFactory = () => new WcfProxy<IThingService>(channelFactory.CreateChannel());

        var client = _serviceFactory();

        IQueryable<ThingDto> result = client.Execute(p => p.GetThings()).OrderBy(x => x.Name).AsQueryable();

        return result;
    }

我不确定如何实现此方法 Metadata()

 public string Metadata()
 {
      //normally something like this if using a EF DataContext
      // return _someContextProvider.Context.Things;

 }

我如何设置 WCF 配置

public class ThingServiceConfiguration
{
    const string AppSettingKey = "ThingServiceUrl";

    public static ChannelFactory<IThingService> CreateChannelFactory()
    {
       // var serviceUrl = ConfigurationManager.AppSettings[AppSettingKey];
        var serviceUrl = "http://localhost:86/ThingService.svc";
        var binding = new BasicHttpBinding(BasicHttpSecurityMode.None)
        {
            MaxReceivedMessageSize = 200000000,
            SendTimeout = TimeSpan.FromMinutes(2),
            ReceiveTimeout = TimeSpan.FromMinutes(2)
        };
        var address = new EndpointAddress(serviceUrl);
        return new ChannelFactory<IThingService>(binding, address);
    }
}

是否可以通过 WCF 调用 Metadata() 属性来提供此元数据(通过 BasicHttpBinding 提供参数?

非常感谢!

4

1 回答 1

0

您只需以 json 形式返回元数据即可返回 Breeze 的“本机”元数据。像这样的东西:

[HttpGet]
public String Metadata() {
  var folder = Path.Combine(HttpRuntime.AppDomainAppPath, "App_Data");
  // metadata.json is the name of a file containing your metadata - pick any file name you like.
  var fileName = Path.Combine(folder, "metadata.json");
  var jsonMetadata = File.ReadAllText(fileName);
  return jsonMetadata;
}

此处描述了元数据文件的语法:Breeze metadata format

于 2013-06-10T20:07:18.917 回答