Wcf サービスと通信している Web アプリケーションと Android アプリケーションがあります。私のサービスの1つはChat.svcです
[ServiceContract(Namespace = "http://webchat.com")]
public interface IChat
{
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "Start")]
StartChatResult StartChat(StartChatEntity sce);
}
および Chat.svc.cs
public StartChatResult StartChat(StartChatEntity sce)
{
//doing something else
List<tblChatRoom> list = ChatManager.GetChatRoomList();
return new StartChatResult() { IsSuccess = true, ChatRooms = list };
}
そして、私の ChatManager クラスからのこのメソッド
public static List<tblChatRoom> GetChatRoomList()
{
SessionDBDataContext db = new SessionDBDataContext();
return db.tblChatRooms.ToList();
}
Android 側から StartChat メソッドを呼び出すと、常に「Bad Request」応答が返されます。この行にコメントするとき
List<tblChatRoom> list = ChatManager.GetChatRoomList();
私は「OK」を持っています、問題ありません。この行に問題があります。また、SessionDBDataContext クラスは
[global::System.Data.Linq.Mapping.DatabaseAttribute(Name="SessionDB")]
public partial class SessionDBDataContext : System.Data.Linq.DataContext
{
private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
public SessionDBDataContext() :
base(global::System.Configuration.ConfigurationManager.ConnectionStrings["SessionDBConnectionString"].ConnectionString, mappingSource)
{
OnCreated();
}
public SessionDBDataContext(string connection) :
base(connection, mappingSource)
{
OnCreated();
}
public SessionDBDataContext(System.Data.IDbConnection connection) :
base(connection, mappingSource)
{
OnCreated();
}
public SessionDBDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
base(connection, mappingSource)
{
OnCreated();
}
public SessionDBDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
base(connection, mappingSource)
{
OnCreated();
}
public System.Data.Linq.Table<tblChatRoom> tblChatRooms
{
get
{
return this.GetTable<tblChatRoom>();
}
}
public System.Data.Linq.Table<tblTalker> tblTalkers
{
get
{
return this.GetTable<tblTalker>();
}
}
public System.Data.Linq.Table<tblSession> tblSessions
{
get
{
return this.GetTable<tblSession>();
}
}
public System.Data.Linq.Table<tblMessagePool> tblMessagePools
{
get
{
return this.GetTable<tblMessagePool>();
}
}
}
SessionDB.dbml に問題があると思いますが、サービスメソッドではないメソッドを使って Chatroom リストを取得すれば問題ありません。サービスを呼び出すときに何が悪いのか理解できませんでした。助けてください