単純なWebAPIコントローラーがあるとしましょう。結果として、基本的な.NETタイプを返したいです。例えば:
public class LoginController : ApiController
{
[HttpPost]
public bool Authenticate(LoginUserViewModel loginUserViewModel)
{
return true;
}
}
リクエストがすべてのブラウザでまったく同じであっても、ブラウザごとに異なる結果が得られます。ChromeとIE7では、応答ヘッダーにapplication/jsonとしてContent-Typeを取得します。charset = utf-8であり、応答値は「 true 」に等しい。Firefoxは応答Content-Typeをapplication/xmlとして認識します; charset = utf-8であり、応答値を次のように設定します。
"<boolean xmlns="http://schemas.microsoft.com/2003/10/Serialization/">true</boolean>"
サーバー側で応答タイプを設定して常に同じになるようにする方法はありますか?ありがとう。
更新:コントローラーの呼び出しに使用するJavaScriptは次のとおりです。
Ext.Ajax.request({
async: false,
url: 'Login/Authenticate',
defaultHeaders: { 'Accept': 'application/json' },
jsonData: user,
success: function (response, options) {
if (response.responseText !== 'true') {
Ext.Msg.alert('Error', 'Login failed, please try again');
} else {
document.location = 'Main.aspx';
}
},
failure: function (response, options) {
Ext.MessageBox.hide();
Ext.Msg.alert('Error', 'Server error. Cannot authenticate user.');
}
});