2009-04-29 42 views

回答

10

我会建议为服务设置多个端点。使用webHttpBinding添加一个端点来获取服务的XML版本。如果这样做正确,您将从服务获得的响应与basicHttpBinding端点相同,但没有SOAP开销。

除此之外,不能直接从浏览器调用SOAP Web服务,因为它需要表单发布。你可以使用工具来测试它使用SOAP,但我建议Soap UI。它用Java编写,但我尽量不要对此持反对意见。 :)

36

您将需要WebGetAttribute添加到您的方法就像在浏览器下面的示例

[OperationContract] 
[WebGet(UriTemplate = "/placesList/{userId}", 
ResponseFormat = WebMessageFormat.Xml)] 
List<Places> GetAllPlacesForUser(String userId) 
{ 
    string xml = ""; 
    // build xml here 
    return xml; 
} 

现在,你可以调用这样

http://localhost:8085/GeoPlacesDataService/placesList/10
的方法,其中10是userId参数。

注:为了添加WebGetAttribute你必须引用其在一个单独的组件

+6

网络小工具不适合我。 IE向我展示了“坏请求”。 – Josh 2011-05-13 17:44:18

6

发现添加上述代码之后System.ServiceModel.Web命名空间,端点属性在被修改web.configbinding="webHttpBinding"behaviorConfiguration="webHttp"

+3

您介意指定包含这些属性的标签吗? 或者如果您向我们提供您的web.config文件,它将会非常友善。 – 2012-09-04 16:32:00