2012-04-19 8 views
0

最近、私はIIS7でRestfulサービスを公開しようとしていましたが、それは不運でした。公開されると、web.configで割り当てたエンドポイントは認識されません。 IIS 7は現在はローカルホストです。開始すると、クライアントサーバーに移動します。 Web.Config以下IIS 7でJsonを返す安らかなサービスを公開する

public class COService : ICOService 
{ 
    private COEntities context = new COEntities(); 

    public List<AnosAutos> GetAnosAutos() 
    { 
     List<AnosAutos> list = new List<AnosAutos>(); 
     list = ConvertFromEntityToObject(list); 
     return list; 
    } 

    /// <summary> 
    /// Convert entity WP_AnosAutos to class AnosAutos 
    /// </summary> 
    /// <param name="list">Contains list of type AnosAutos</param> 
    /// <returns>Returns the converted list</returns> 
    private List<AnosAutos> ConvertFromEntityToObject(List<AnosAutos> list) 
    { 
     List<WP_AnosAutos> temp = context.WP_AnosAutos.ToList(); 
     foreach (WP_AnosAutos wp in temp) 
     { 
      AnosAutos aa = new AnosAutos(); 
      //aa.ID = wp.ID; 
      aa.AutoYear = wp.AutoYear; 
      list.Add(aa); 
     } 
     return list; 
    } 

    /// <summary> 
    /// Returns all Autos without being filtered by year. 
    /// </summary> 
    /// <param name="allYear"></param> 
    /// <param name="marca"></param> 
    /// <param name="categoria"></param> 
    /// <param name="lowerPrice"></param> 
    /// <param name="upperPrice"></param> 
    /// <returns></returns> 
    public List<Autos> GetAutos(string allYear, string marca, string categoria, string lowerPrice, string upperPrice) 
    { 
     List<Autos> list = new List<Autos>(); 
     list = ConvertFromEntityToObject(list, allYear, marca, categoria, lowerPrice, upperPrice); 
     return list; 
    } 

    /// <summary> 
    /// Convert entity WP_Autos to class Autos 
    /// </summary> 
    /// <param name="list">Contains list of type Autos</param> 
    /// <returns>Returns the converted list</returns> 
    private List<Autos> ConvertFromEntityToObject(List<Autos> list, 
     string year, string marca, string categoria, string lowerPrice, string upperPrice) 
    { 
     List<WP_Autos> temp = context.GetFilteredAutos(Convert.ToInt32(year), null, null, 
      marca, categoria, Convert.ToInt32(lowerPrice), Convert.ToInt32(upperPrice)).ToList(); 
     foreach (WP_Autos wp in temp) 
     { 
      Autos a = new Autos(); 
      a.ID = wp.ID; 
      a.SocioID = wp.SocioID; 
      a.SocioLogo = wp.SocioLogo; 
      a.Marca = wp.Marca; 
      a.Modelo = wp.Modelo; 
      a.Descripcion = wp.Descripcion; 
      a.Foto = wp.Foto; 
      a.Nombre = wp.Nombre; 
      a.PersonaContacto = wp.PersonaContacto; 
      a.Email = wp.Email; 
      a.Tel = wp.Tel; 
      a.Tel2 = wp.Tel2; 
      a.Categoria = wp.Categoria; 
      a.Municipio = wp.Municipio; 
      a.Millaje = wp.Millaje; 
      a.Precio = wp.Precio; 
      a.Comentario_Precio = wp.Comentario_Precio; 
      a.Ano = wp.Ano; 
      list.Add(a); 
     } 
     return list; 
    } 

されています:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 

    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
    <services> 
     <service name="COWebService"> 
     <endpoint name="AnosAutos" address="/AnosAutos" binding="webHttpBinding" contract="COWebService.ICOService.GetAnosAutos" behaviorConfiguration="JsonBehavior"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint name="AutosAll" address="/Autos" binding="webHttpBinding" contract="COWebService.ICOService.GetAutosAll" behaviorConfiguration="JsonBehavior"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
      <serviceMetadata httpGetEnabled="true" /> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="JsonBehavior"> 
      <enableWebScript /> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="false" /> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    </system.webServer> 
    <connectionStrings> 
     <remove name="LocalSqlServer" /> 
    <add name="COEntities" connectionString="metadata=res://*/COModel.csdl|res://*/COModel.ssdl|res://*/COModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=DataSourceHere;Initial Catalog=DBNameHere;User ID=IDHere;Password=PassHere;Application Name=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

データベースホスティング:Azureのが、すぐに地元の敷地内には、以下の

[ServiceContract] 
public interface ICOService 
{ 
    /// <summary> 
    /// Devuelve la lista de los anos de los autos (lol) 
    /// </summary> 
    /// <returns></returns> 
    [OperationContract] 
    [WebInvoke(Method = "GET", UriTemplate = "/AnosAutos", ResponseFormat = WebMessageFormat.Json, 
     RequestFormat = WebMessageFormat.Json)] 
    List<AnosAutos> GetAnosAutos(); 

    /// <summary> 
    /// Returns the result of Autos Search 
    /// </summary> 
    /// <returns></returns> 
    [OperationContract(Name="GetAutosAll")] 
    [WebInvoke(Method = "POST", UriTemplate = "/Autos", ResponseFormat = WebMessageFormat.Json, 
     RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] 
    List<Autos> GetAutos(string allYear, string marca, string categoria, string lowerPrice, string upperPrice); 

} 

サービス実装されています。以下のインターフェイスです私が家に帰るとすぐに私はマイグレーションを行います。 現在の問題:作成したWebServiceを使用してインターネットから情報をダウンロードできません。 問題が発生しました:HTTP 405を返す:メソッドが許可されていません。エンドポイントがエンティティフレームワークに関連したエラーを返す場所に依存することがあります。 詳細情報:.Net Framework 4を使用してサービスをホストしようとしています ラッキーショット:(AnosAutos)を実行している1つのエンドポイントがありますが、他の返されたメソッドは許可されていませんHTTP 405. 私は3週間これをstackoverflowで投稿することにしました。もっと情報が必要な場合は、それを言ってください。

答えて

-1

HTTP POSTでGetAutos()を呼び出す必要があります

関連する問題