ServiceStack と Sitefinity V3.7sp3 net35 を使用して簡単な Web サービスを実装しようとしました。この web configを使用して ServiceStack を localhost/api として追加しました。IService を使用して完全なアイテムのニュース コンテンツを取得するサービス クラスを実装し、ルートのグローバル asax を登録した後。結果は常にゼロ項目です。これは、Sf フォーラムのこの別の投稿と非常によく似ています。ContentManager を変更しないと、プロバイダーは常にゼロのアイテムとカウントとしてゼロを返します。私の Sf は多言語 en,fr..using パスを許可しています。多くは非同期である必要がありますか?. もちろん、誰かがサービススタックを使用してこのケースを修正するのを手伝ってくれますか?
よろしく。
[Description("Find items by baseclass, or all default if no genre is provided")]
[RestService("/api/items")]
[RestService("/api/items/news")]
[RestService("/api/items/news/{provider}")]
[RestService("/api/items/news/{provider}/{language}")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Items
{
public string provider { get; set; }
public string language { get;set; }
IList ItemsList{ get; set; }
}
/// <summary>
/// Summary description for NewsResponse
/// </summary>
public class ItemsResponse
{
public ItemsResponse()
{
}
public ResponseStatus ResponseStatus { get; set; } //Automatic exception handling
public IList Items { get; set; }//return a list of objects
}
/// <summary>
/// Summary description for NewsServices
/// </summary>
public class ItemsService : ServiceStack.ServiceHost.IAsyncService<Items>
{
//public object Execute(Items request)// with IService
//{
// ItemsResponse response = new ItemsResponse();
// response.Items = ItemsList(request.provider, request.language);//request.provider
// return response;
// ALWAYS ZERO AS RESPONSE
//}
//ERROR ON HANDLER ?
object IAsyncService<Items>.ExecuteAsync(Items request)
{
ItemsResponse response = new ItemsResponse();
//if (request.provider != null)
response.Items = ItemsList(request.baseclass, request.provider, request.language);//request.provider
return response;
}
public IList ItemsList(string provider, string language)
{
if(provider==string.Empty)
provider = NewsManager.DefaultContentProvider;
if (language == string.Empty)
language = "es";
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(language);
NewsManager manager = new NewsManager(provider);
//Get items from this language
IList data = manager.Content.GetContent();
return data;
}
}