创建 wcf .svc 服务时出错
Posted
技术标签:
【中文标题】创建 wcf .svc 服务时出错【英文标题】:Error creating wcf .svc service 【发布时间】:2015-05-28 17:13:42 【问题描述】:我创建了下面给出的以下 svc 服务-
public class NewsRest : INewsRest
public string getHomePageNews1()
DataTable dt = new DataTable();
try
dt = new ManageNews().getHomePageNews1();
string json = new Utills().dataTableToJsonString(dt);
json = json.Replace("task-photo-846b6edc-3b2e-4ff6-ba10-734d64143c1d.png", "task-photo-8d5feed4-d6a1-4ae9-9a72-387ccfda1dc5.jpg");
return json;
catch (Exception ex)
return "";
[ServiceContract]
public interface INewsRest
[OperationContract]
[WebGet(ResponseFormat=WebMessageFormat.Json)]
string getHomePageNews1();
和 web config 配置是-
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="NewsRestBehavior">
<serviceMetadata httpGetEnabled="true" policyVersion="Policy15" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="UPNews.WebServices.NewsRest" behaviorConfiguration="NewsRestBehavior">
<endpoint address=""
binding="basicHttpBinding"
contract="UPNews.WebServices.INewsRest" />
<endpoint address="mex" binding="mexHttpBinding" name="MetadataEndpoint"
contract="IMetadataExchange" />
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
但是当我在 WCF 测试客户端上测试此服务时,它会出现以下错误。-
错误:无法从http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1 获取元数据 如果这是您有权访问的 Windows (R) Communication Foundation 服务, 请检查您是否已在指定地址启用元数据发布。 如需帮助启用元数据发布, 请参阅http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange 错误处的 MSDN 文档 URI:http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1 元数据包含无法解析的引用: 'http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1'。内容类型应用程序/soap+xml; 服务 http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1 不支持 charset=utf-8。 客户端和服务绑定可能不匹配。远程服务器返回错误: (415) Unsupported Media Type.HTTP GET Error URI: http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1 下载时出错 'http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1'。请求失败,HTTP 状态 400:错误请求。
请告诉这里发生了什么错误。
【问题讨论】:
【参考方案1】:您必须添加到您的服务器配置以允许 MEX(元数据交换),以便客户端可以检索生成的 WSDL。像这样的:
<service name="UPNews.WebServices.NewsRest" behaviorConfiguration="NewsRestBehavior">
<endpoint address=""
binding="basicHttpBinding"
contract="UPNews.WebServices.INewsRest" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
【讨论】:
元数据包含无法解析的引用:'localhost:57358/WebServices/NewsRest.svc/getHomePageNews1'。 Sendera:DestinationUnreachableTo 'localhost:57358/WebServices/NewsRest.svc/getHomePageNews1' 的消息无法在接收方处理,因为 EndpointDispatcher 的 AddressFilter 不匹配。检查发送方和接收方的 EndpointAddresses 是否一致 这看起来您的服务器和客户端配置不匹配。确保发送方和接收方的 EndpointAddresses 一致。以上是关于创建 wcf .svc 服务时出错的主要内容,如果未能解决你的问题,请参考以下文章