我现在正在构建一个webservice,我想与android应用程序一起使用。我面临的问题是,应该返回字符串(json)的webservice方法将其与方法名称(Login)连接起来。我试着搜索这个问题,虽然我想我不是第一个遇到这个问题的人,但我什么也没找到。
我的json变量是这样的:
json = "{ "UserID": "" + login.UserID + "", "Salutation": "" + webUser.Salutation + "", "Title": "" + webUser.Title + "", "Name": "" + webUser.Name + "", "Lastname": "" + webUser.Lastname + "" } ";
然后返回。
但是当我通过Postman或我的android应用程序使用它时,它看起来像这样:
{ "LoginResult": { "UserID": "" + login.UserID + "", "Salutation": "" + webUser.Salutation + "", "Title": "" + webUser.Title + "", "Name": "" + webUser.Name + "", "Lastname": "" + webUser.Lastname + "" }}
这是一个我不想要的行为,我找不到任何关于如何阻止它的信息。
我怎么能让我的Webservice只是返回字符串,我写的,而不是连接一个方法名?
因为我真的不能把我的头围绕为什么会发生这种情况,我只是搜索如果这个行为可以配置在某个地方,但我什么也没发现。
编辑:我不认为,这真的会改变很多,但正如它被问到的,这里是完整的方法有点混乱:
public string Login(string username, string passwort)
{
string json = "error";
try
{
var login = Namespace.ViewModels.LoginData.SelectByUserNamePassword(username, passwort);
Namespace.Models.WebAppUser webUser = new Namespace.Models.WebAppUser();
lock (webUser)
{
webUser = new Namespace.Controllers.ApplicationController().setWebUserT(Convert.ToInt32(login.UserID), Convert.ToInt32(login.BetriebID), login.BetriebTyp, login.SessionID, login.UniqueID, login.DBName);
}
if (webUser != null && webUser.UserID != -1)
{
json = "{ "UserID": "" + login.UserID + "", "Salutation": "" + webUser.Salutation + "", "Title": "" + webUser.Title + "", "Name": "" + webUser.Name + "", "Lastname": "" + webUser.Lastname + "" }";
}
}
catch (Exception ex)
{
SimpleLogger.Exception(ex);
}
return json;
}
我终于找到答案了
在我的接口中,Serviceclass。svc派生,有一个指定的格式,我忽略了。
[WebInvoke(Method = "GET", UriTemplate = "Login?username={username}&passwort={passwort}", RequestFormat = WebMessageFormat.]Json, ResponseFormat = WebMessageFormat。Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
用户名和密码这里我改变了BodyStyle = WebMessageBodyStyle。包装它将请求包含到响应中:
BodyStyle = WebMessageBodyStyle。裸露的
,它不再包含方法的名称到我的json响应。