2015-03-25 100 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