2015-03-25 99 views
0

我创建了以下如下─错误创建WCF的.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配置给SVC服务是 -

<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测试客户端,它给出以下错误.-

Error: Cannot obtain Metadata from http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1 If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1 Metadata contains a reference that cannot be resolved: ' http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1 '. Content Type application/soap+xml; charset=utf-8 was not supported by service http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1 . The client and service bindings may be mismatched. The remote server returned an error: (415) Unsupported Media Type.HTTP GET Error URI: http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1 There was an error downloading ' http://localhost:57358/WebServices/NewsRest.svc/getHomePageNews1 '. The request failed with HTTP status 400: Bad Request.

请告诉这里发生了什么问题。

回答

0

您必须添加到您的服务器配置才能允许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> 
+0

元数据包含无法解析的引用:'http:// localhost:57358/WebServices/NewsRest.svc/getHomePageNews1'。 Sendera:DestinationUnreachable To'http:// localhost:57358/WebServices/NewsRest.svc/getHomePageNews1'的消息由于EndpointDispatcher中的AddressFilter不匹配而无法在接收方处理。检查发件人和收件人的EndpointAddresses是否同意 – VIVEK 2015-03-25 08:08:17

+1

并且错误是..... – 2015-03-25 08:11:49

+0

这看起来像您的服务器和客户端配置不匹配。确保发件人和收件人的EndpointAddresses同意。 – 2015-03-25 12:53:38