これは今日私を夢中にさせています。うまくいけば、ここの誰かが私がそれを解読するのを手伝ってくれることを願っています.
基本的に、jQuery で使用する WCF サービスを使用してテスト サイトを作成しました。3 つの方法があり、そのうちの 2 つは完全に機能します。
サービスは JSON を返します。3 つの方法があり、そのうちの 2 つは完全に機能します。3 つ目はそうではありません。その理由はわかりません。
これは私が知っていることです。
Visual Studio からサイトを起動すると、サービスを参照して、フォーマットされた JSON を表示できます。ブラウザ、つまり IIS バージョンで同じことをしようとすると、400 エラーが発生します。ただし、1 つの方法についてのみ - 他の方法は問題ありません。
私を困惑させたのはその矛盾です。
仮想ディレクトリではなく、IIS の Web サイトとして設定しました。参照するには、URL の形式はhttp://mytestsite.local です。
ウォークスルーに従って (WCF の作業を行ってからしばらく経ちました!)、web.config からサービス関連の構成情報を削除するというアプローチを取りました。代わりに、.svc ファイル内のクラス WebServiceHostFactory を参照する Factory 属性があります。
メソッドは次のとおりです。
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
public UserDTO[] GetUsers()
{
using (var dbContext = new GSChallengeContext())
{
var results = from u in dbContext.Users
select new UserDTO()
{
UserId = u.UserId,
Forename = u.Forename,
Surname = u.Surname,
};
return results.ToArray();
}
}
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
public UserDTO[] GetUserById(int userId)
{
using (var dbContext = new GSChallengeContext())
{
var results = from u in dbContext.Users
where u.UserId == userId
select new UserDTO()
{
UserId = u.UserId,
Forename = u.Forename,
Surname = u.Surname,
DateOfBirth = (DateTime)u.DateOfBirth
};
return results.ToArray();
}
}
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
public VehicleDTO[] GetVehiclesByUserId(int userId)
{
using (var dbContext = new GSChallengeContext())
{
var results = from v in dbContext.Vehicles
where v.UserId == userId
select new VehicleDTO()
{
VehicleId = v.VehicleId,
UserId = v.UserId,
Registration = v.Registration,
Alias = v.Alias,
Disabled = v.Disabled
};
return results.ToArray();
}
}
これは、呼び出しを行うコードです。
function ShowUserVehicleInfo()
{
var userId = $("#users").val();
var outStr = "";
$.getJSON('Services/GSChallenge.svc/GetVehiclesByUserId?userId=' + userId,
function (data) {
$.each(data, function (index, elem) {
outStr += "<div class=\"vehicleData\">" +
"<p>Registration: " + elem.Registration + "</p>" +
"<p>Alias: " + elem.Alias + "</p>" +
"<p>Disabled: " + elem.Disabled + "</p>" +
"</div>"
});
}
);
}
投稿する前に検索しましたが、問題を解決するもの、または役立つものはまだ見つかりません.
誰でも助けることができますか?