Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何定义属性以将数据上载到通过WCF服务实现的REST web服务?_Wcf_Rest_Webinvoke - Fatal编程技术网

如何定义属性以将数据上载到通过WCF服务实现的REST web服务?

如何定义属性以将数据上载到通过WCF服务实现的REST web服务?,wcf,rest,webinvoke,Wcf,Rest,Webinvoke,我创建了一个WCF服务,它返回一些数据,还允许向发布一些数据。 服务方法如下: [OperationContract] bool UploadStream(Guid key, List<StreamRecord> values); [OperationContract] bool RegisterStream(Guid key); [OperationContract] StreamCollection GetStreams(Gui

我创建了一个WCF服务,它返回一些数据,还允许向发布一些数据。 服务方法如下:

    [OperationContract]
    bool UploadStream(Guid key, List<StreamRecord> values);

    [OperationContract]
    bool RegisterStream(Guid key);

    [OperationContract]
    StreamCollection GetStreams(Guid key);
它工作正常(我可以从浏览器地址栏测试,一切正常)

现在我也想实现Upload方法,但我不确定如何实现 我试过了

    [WebInvoke(
        Method = "POST",
        RequestFormat = WebMessageFormat.Xml,
        ResponseFormat = WebMessageFormat.Xml,
        UriTemplate = "/stream/{streamKey}/records/{values}")]
    bool UploadStream(string streamKey, List<StreamRecordEntity> values);
它给出了一个错误:

协定“IRestServerJson”中的操作“UploadBitStream”有一个名为“values”的路径变量,该变量没有“string”类型。模板路径段的变量必须具有“字符串”类型。

我想对于POST我不能定义这样的URL,但我应该怎么做呢

另外,方法RegisterStream应该检查带键的流是否存在,如果不存在,则创建它并返回true,否则返回false

我应该将其定义为GET(因为它必须返回结果)还是PUT或POST


谢谢

POST
请求的正文中传递
,格式为xml,而不是url。测试这一点的一个简单方法是使用

关于
RegisterStream
POST
PUT
都可以在响应体中返回信息。您可以使用
POST
并根据服务器采取的操作返回适当的HTTP状态代码:
201 Created
如果资源已创建,则返回一个不同的状态代码,如果资源已存在,则该代码在应用程序中有意义

调用方可以根据返回的HTTP状态代码确定资源是否已创建或已存在,因此不需要返回值
bool

旁注:您可以使用
[WebGet(…)]
而不是
[WebInvoke(Method=“GET”…)]

    [WebInvoke(
        Method = "POST",
        RequestFormat = WebMessageFormat.Xml,
        ResponseFormat = WebMessageFormat.Xml,
        UriTemplate = "/stream/{streamKey}/records/{values}")]
    bool UploadStream(string streamKey, List<StreamRecordEntity> values);
http://localhost:6767/RestServer.svc/