最近、私は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="Data Source=DataSourceHere;Initial Catalog=DBNameHere;User ID=IDHere;Password=PassHere;Application Name=EntityFramework"" 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で投稿することにしました。もっと情報が必要な場合は、それを言ってください。