问题标签 [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.
c# - WebGet 的 WCF 响应格式
WCF 为 ServiceContract 的 WebGet 注释中的 ResponseFormat 属性提供了两个选项。
ResponseFormat 的选项是 WebMessageFormat.Json 和 WebMessageFormat.Xml。是否可以编写我自己的网络消息格式?我希望当客户端调用 foo() 方法时,他得到原始字符串 - 没有 json 或 xml 包装器。
.net - WCF WebGetAttribute 与 WebInvokeAttribute
WebGetAttribute 只是 Method = "GET" 的 WebInvokeAttribute 的语法糖吗?还是有根本的区别?
wcf - WCF WebGet 和 ICollection<>
我正在尝试从 REST WCF 服务返回一个通用的 ICollection。以下应该是可能的吗?
当我尝试从 Web 浏览器执行此操作时,出现错误。查看我的 WCF 跟踪向我展示了这一点:
无法序列化“System.String[]”类型的参数(用于操作“GetStrings”,合同“WebConfigurationManager”),因为它不是方法中的确切类型“System.Collections.Generic.ICollection`1[System.String]”签名并且不在已知类型集合中。为了序列化参数,使用 ServiceKnownTypeAttribute 将类型添加到已知类型集合以进行操作。
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 中的一个错误,还是未来可能是正确的?
谢谢
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 ...
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 服务)。
c# - OData 和自定义 WCF WebGet 方法
我创建了一个 OData 端点(使用实体框架、WCF 数据服务)
并添加了一个自定义测试 WebGet 测试方法,如下所示:
和一个配置行:
但是,无论我如何指定网址,我都无法填写要填写的文本参数。(它始终为空)。
所以:
http://localhost/myservice.svc/SplitString/testtext
不起作用(它抛出我的异常,因为参数为空)。应该使用什么正确的 url 格式(或 UriTemplate)来使参数起作用?
我发现的 odata 和 WebGet 的唯一示例只有一个没有任何参数的示例方法。
wcf - 无法将“%26”传递给 WCF 服务中的 WebGet UriTemplate 变量?
我有一个具有此声明操作的 WCF 服务:
但是,当尝试调用 URL 时Test/You%26Me
,IIS 返回错误:
我的目标是通过 URL-Encoding: %26 在 URI 中使用 & 符号
通配符没有帮助。有没有办法在不禁用安全功能的情况下防止这个错误?
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 来处理动态数量的键值对?
wcf - 在 IIS 中托管 wcf 服务时无法访问 REST 方法
我有一个 WCF REST 服务,它公开了 GreetService 类中的一个方法:
另外,我在 Global.asax 中注册了一条路线:
现在,当我直接从 Visual Studio 运行它时,我可以利用 UriTemplate 并使用对 http://localhost:5432/GreetService/greet/JohnDoe的 GET 调用来调用此方法
但是,通过为其创建 Greet.svc 文件将其部署到 IIS7 后,我观察到以下行为:
- 我可以调用http://localhost:5432/Greet.svc它说已经创建了一个服务
- 我可以将 wcftestclient 指向http://localhost:5432/Greet.svc?wsdl以生成可以直接调用 GreetName() 的测试客户端
- 但是,我不能调用http://localhost:5432/Greet.svc/GreetService/greet/JohnDoe也不能调用 http://localhost:5432 /Greet.svc/greet/JohnDoe虽然我希望能够因为我指定在将其托管在 IIS7 中之前,相应 web.config 文件中的空相对端点地址。
任何想法为什么 WebGetAttribute 在 IIS 中不起作用?还是我做错了什么?
编辑:这是我的 web.config 文件的 ServiceModel 部分,它位于 IIS 使用的目录中:
编辑 2:为了完整起见,这里是我的完整 web.config 文件: