【问题标题】:WCF Service, Download file with parameters, send data on GET requestWCF 服务,下载带参数的文件,在 GET 请求上发送数据
【发布时间】:2014-01-07 14:49:12
【问题描述】:

jQuery 支持使用GET 请求发送数据:

jQuery.get( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )

是否可以编写支持在GET 请求上接收数据的 WCF 服务?

非常感谢一个例子。

更新:网址长度超过了 IE8 的限制,并且 IE8 是必需的。我需要传递很多参数,基本上是一个很大的 JSON。我解决此问题的方法是发出POST 请求,将参数存储在服务器端,然后将window.location 设置为服务位置,调用将下载我的文件的GET 请求。但是,我想避免POST 请求并将文件存储在服务器端,因为我在分布式系统中,对此我有很多问题。

【问题讨论】:

  • 查看 REST WCF 服务或 WebAPI。
  • 我认为这可能会有所帮助。 stackoverflow.com/questions/18051439/…
  • 我不能使用 REST,也不能使用 WebAPI,现在也不能改变实现,但很高兴知道未来。
  • @Mutant : 我还不清楚如何读取服务器端的数据

标签: c# jquery .net wcf


【解决方案1】:

当然可以:

[OperationContract]
[WebInvoke(
    Method = "GET",
    UriTemplate = "SomeUrl?param1={param1}&param2={param2}"
)]
string SomeOperation(string param1, string param2);

然后:

$.get('SomeService.svc/SomeUrl?param1=SomeValue&param2=AnotherValue', function(response) {
    console.log(response);
});

或者:

$.get('SomeService.svc/SomeUrl', {param1: 'SomeValue', param2: 'AnotherValue'}, function(response) {
    console.log(response);
});

【讨论】:

  • 参数大小有限制吗?这对我来说是问题的根源
  • 如果数据在 URL 中格式化,在 Internet Explorer 中,最大限制为 2083。但是,在 Firefox(80K+ 字符)和 Safari(100K+)中,允许的最大长度实际上是巨大的。我敢打赌 Chrome 采用与 Firefox 和/或 Safari 相同的方法。 (来源:boutell.com/newfaq/misc/urllength.html
  • 我需要在 IE8 上支持这一点,目前正在通过将 window.location 设置为服务 url 来工作。这将调用 GET 请求,但我需要传递很多参数,基本上是一个巨大的 JSON。为了解决这个问题,我使用参数发出了一个 POST 请求,将它们存储在服务器端,然后是一个带有短 url 的 GET 请求。但是,我想避免 POST 请求
  • POST 更适合发送巨大的 JSON。为什么要避免 POST 请求?
  • 因为我无法保存响应 POST 请求时收到的文件
【解决方案2】:

这是可能的。此处链接了解更多信息 - How to: Choose between HTTP POST and HTTP GET requests for ASP.NET AJAX Endpoints

但是REST服务更适合AJAX和JS调用。当涉及新服务时,您可以使用 ASP.NET Web API。很多关于它的教程here

【讨论】:

    猜你喜欢
    • 2013-10-20
    • 2019-10-18
    • 2012-10-26
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    相关资源
    最近更新 更多