问题标签 [webget]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
31041 浏览

c# - WebGet 的 WCF 响应格式

WCF 为 ServiceContract 的 WebGet 注释中的 ResponseFormat 属性提供了两个选项。

ResponseFormat 的选项是 WebMessageFormat.Json 和 WebMessageFormat.Xml。是否可以编写我自己的网络消息格式?我希望当客户端调用 foo() 方法时,他得到原始字符串 - 没有 json 或 xml 包装器。

0 投票
2 回答
4853 浏览

.net - WCF WebGetAttribute 与 WebInvokeAttribute

WebGetAttribute 只是 Method = "GET" 的 WebInvokeAttribute 的语法糖吗?还是有根本的区别?

0 投票
2 回答
1551 浏览

wcf - WCF WebGet 和 ICollection<>

我正在尝试从 REST WCF 服务返回一个通用的 ICollection。以下应该是可能的吗?

当我尝试从 Web 浏览器执行此操作时,出现错误。查看我的 WCF 跟踪向我展示了这一点:

无法序列化“System.String[]”类型的参数(用于操作“GetStrings”,合同“WebConfigurationManager”),因为它不是方法中的确切类型“System.Collections.Generic.ICollection`1[System.String]”签名并且不在已知类型集合中。为了序列化参数,使用 ServiceKnownTypeAttribute 将类型添加到已知类型集合以进行操作。

0 投票
2 回答
6375 浏览

ienumerable - 使用 IEnumerable 序列化数据使用 WebGet

可能重复:
使用 WCF、LINQ、JSON 时无法序列化类型为“System.Linq.Enumerable...”的参数


你好,

如果我的方法签名看起来像这样,它工作正常。

如果签名看起来像这样

我收到以下错误:无法序列化类型为“XYZT+<WebMethod>d__2c”的参数(对于操作“WebMethod”,合同“IService”),因为它不是确切的类型“System.Collections.Generic.IEnumerable`1[XYZT] ' 在方法签名中并且不在已知类型集合中。为了序列化参数,使用 ServiceKnownTypeAttribute 将类型添加到已知类型集合以进行操作。

我试过添加。ServiceKnownType(typeof(IEnumerable))

同样的错误。

这是 2010 beta 2 中的一个错误,还是未来可能是正确的?

谢谢

0 投票
2 回答
3905 浏览

c# - 在 URL 中传递网络路径

我正在使用一种方法创建 WCF 服务

fullFileName 是网络文件或主机上文件的完整路径。

主机是具有 webHttpBinding 和行为配置的 Windows 服务。我想使用类似的东西从浏览器中调用它

我试过 .../acl/f=file://\server\share\file.ext .../acl/f=file://c:\file.ext

在浏览器中,我收到“找不到端点”。

我知道这行得通,因为我可以调用 .../acl/f=file.txt 并且我从我的服务中得到正确的响应,表明找不到该文件。因此,当我不在 URI 中使用任何类型的斜杠时,该方法会被正确调用。

对此的任何想法将不胜感激。

谢谢,hotmail的beezlerco ...

0 投票
1 回答
311 浏览

batch-file - Ado.net dataservices BeginExecuteBatch 调用适用于开发在生产服务器上失败,对象与目标类型不匹配

我们有一个 ado.net dataservices 1.0 调用,它通过 BeginExecuteBatch 作为批处理传递给 [WebGet] 服务操作。

一切都在我们的开发服务器上完美运行——我们将项目配置为使用 IIS 而不是 cassini Web 服务器,以使其尽可能接近我们的生产服务器。

当我们发布到生产服务器时,所有服务操作都可以正常工作,除了批处理调用失败,因为Object 与目标类型不匹配。. 我无法找到任何原因。

我什至可以通过复制批处理中使用的 URL 并将其粘贴到浏览器中来针对 [WebGet] 服务运行单个非批处理样式的 GET 操作。

我无法找到任何信息来帮助我解决这个问题 - 任何指导将不胜感激。

谢谢,迈克 M。

来自 Fiddler 的错误消息:

HTTP/1.1 500 内部服务器错误 Content-Type: application/xml DataServiceVersion: 1.0;

处理此请求时发生错误。对象与目标类型不匹配。System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] 参数, CultureInfo 文化, Boolean skipVisibilityChecks) 在 System.Reflection .RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfoculture) at System.Data.Services.RequestUriProcessor.CreateFirstSegment(IDataService service, String identifier, Boolean checkRights, String queryPortion, Boolean & crossReferenceUrl) at System System.Data.Services 中的 .Data.Services.RequestUriProcessor.CreateSegments(String[] 段,IDataService 服务)。

0 投票
1 回答
11708 浏览

c# - OData 和自定义 WCF WebGet 方法

我创建了一个 OData 端点(使用实体框架、WCF 数据服务)

并添加了一个自定义测试 WebGet 测试方法,如下所示:

和一个配置行:

但是,无论我如何指定网址,我都无法填写要填写的文本参数。(它始终为空)。

所以:
http://localhost/myservice.svc/SplitString/testtext

不起作用(它抛出我的异常,因为参数为空)。应该使用什么正确的 url 格式(或 UriTemplate)来使参数起作用?

我发现的 odata 和 WebGet 的唯一示例只有一个没有任何参数的示例方法。

0 投票
1 回答
1418 浏览

wcf - 无法将“%26”传递给 WCF 服务中的 WebGet UriTemplate 变量?

我有一个具有此声明操作的 WCF 服务:

但是,当尝试调用 URL 时Test/You%26Me,IIS 返回错误:

我的目标是通过 URL-Encoding: %26 在 URI 中使用 & 符号

通配符没有帮助。有没有办法在不禁用安全功能的情况下防止这个错误?

0 投票
1 回答
2488 浏览

wcf - WCF:如何将可变数量的参数传递给启用 WebGet 的服务

我们试图通过使用 WebGetAttribute 和 UriTemplate 来公开 REST 接口,将可变数量的键值对传递给我们的服务。我们想做的事:

在客户端,我们想多次指定一些键,例如:
hllp://localhost/MyService/Query/Select?field=Name&fieldsort=asc&field=ID

我们的第一种方法是使用以下 UriTemplate 并手动分解键值对:

但这仅适用于,因此诸如
hllp://localhost/MyService/Query/field=Val%3Due 之类的 URL 会被 WCF 自动解码,并且“field=Val=ue”将被传递给 Service 方法。

更糟糕的是,双重编码的 URL 也会被完全解码:
hllp://localhost/MyService/Query/field=Val%253Due 再次 变为“field=Val=ue”。

有什么办法可以访问原始查询字符串?如果不是,我们能否以另一种方式扩展/使用 UriTemplate 来处理动态数量的键值对?

0 投票
4 回答
8308 浏览

wcf - 在 IIS 中托管 wcf 服务时无法访问 REST 方法

我有一个 WCF REST 服务,它公开了 GreetService 类中的一个方法:

另外,我在 Global.asax 中注册了一条路线:

现在,当我直接从 Visual Studio 运行它时,我可以利用 UriTemplate 并使用对 http://localhost:5432/GreetService/greet/JohnDoe的 GET 调用来调用此方法

但是,通过为其创建 Greet.svc 文件将其部署到 IIS7 后,我观察到以下行为:

任何想法为什么 WebGetAttribute 在 IIS 中不起作用?还是我做错了什么?

编辑:这是我的 web.config 文件的 ServiceModel 部分,它位于 IIS 使用的目录中:

编辑 2:为了完整起见,这里是我的完整 web.config 文件: