2015-02-10 79 views
0

我有一個ASP.NET應用程序,自ASMX日子以來一直存在。當我過去升級這個項目時,我能夠通過擴展System.Web.Services.WebService類來利用WCF服務,然後利用WebInvoke屬性來允許對我的各種方法進行RESTful調用。這裏有一個例子:在Visual Studio 2013中WCF RESTful調用問題

[ServiceContract(Namespace = "http://10.23.41.189/", Name = "SEO")] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public class SEO : System.Web.Services.WebService 
{ 
    [WebMethod(Description = "Use this Web Method to log into The SEO Panel")] 
    [OperationContract] 
    [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, 
     UriTemplate = "Login?User={User}&Pass={Pass}")] 
    public string Login(string User, string Pass) 
    { 

該方法然後將沒有問題轉到http://10.23.41.189/seo.svc/login?User=USER&Pass=PASS

在舊的項目叫,我使用的是網站項目不是一個Web應用程序,現在我已經升級到Visual Studio 2013,我正在使用一個Web應用程序 - 並且該調用不再有效。我使用複製和粘貼將所有內容都移植到了一邊,當我運行WSDL時,我看到了方法,但所有調用都返回了400錯誤請求錯誤。這裏是我的web.config信息:

<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
    multipleSiteBindingsEnabled="true" /> 
<services> 
    <service name="SEO"> 
    <endpoint address="http://10.23.41.189/SEO.svc" behaviorConfiguration="json" binding="webHttpBinding" name="MainHttpPoint" contract="SEOPlatform.Intranet.SEO"/> 
    <endpoint address="mex" binding="mexHttpBinding" name="MexEP" contract="IMetadataExchange"/> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://10.23.41.189/SEO.svc"/> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
<bindings> 
    <webHttpBinding> 
    <binding openTimeout="00:10:00" sendTimeout="00:10:00" useDefaultWebProxy="false"> 
     <readerQuotas maxDepth="32" maxStringContentLength="2048000" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/> 
    </binding> 
    </webHttpBinding> 
</bindings> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="json"> 
     <webHttp helpEnabled="false" automaticFormatSelectionEnabled="false" defaultBodyStyle="Bare"/> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="true" httpGetBinding="webHttpBinding" httpGetBindingConfiguration=""/> 
     <serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="false" includeExceptionDetailInFaults="true"/> 
     <useRequestHeadersForMetadataAddress> 
     <defaultPorts> 
      <add scheme="http" port="80"/> 
     </defaultPorts> 
     </useRequestHeadersForMetadataAddress> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
</system.serviceModel> 

我知道我錯過了一些東西,但我無法弄清楚 - 有沒有人有任何想法?

謝謝!

回答

0

我發誓我應該等待 - 我經常在這裏寫問題,然後相關問題總是有我需要的答案。這一次沒有發生,但是,當我輸入web.config數據時,我發現了這個問題。我想我會發佈一個答案,希望能夠幫助其他人,而不是刪除這個問題。

的問題是與服務名稱:

<services> 
    <service name="SEO"> 

與Web站點的項目,規則寬鬆,但Web應用程序需要正確的符號。我所做的只是將其更改爲:

<services> 
    <service name="SEOPlatform.Intranet.SEO"> 

而且解決了這個問題。我也將multipleSiteBindingsEnabled更改爲false,但如果您需要這樣做,那麼已經在本網站的其他地方發佈了很好的答案。