IIS 7.5を含むサーバーにデプロイされているMVC3アプリケーション(.net framework v4.0.30319)のjQueryオートコンプリートコントロールで "401 - Unauthorized"jQueryオートコンプリートスロー401 - MVC 3コントローラアクションメソッドの呼び出し中に不正なエラーが発生しました
コントローラ:(SearchSuggestController)
[HttpGet]
public JsonResult SuggestByEmployeeId(string Id)
{
var suggestions = from a in Context.Employees
where a.EmployeeId.Contains(Id)
select new
{
a.EmployeeId,
a.FirstName,
a.LastName
};
return Json(suggestions, JsonRequestBehavior.AllowGet);
}
jQueryの:(オートコンプリート)
$(function() {
$("#IDFilter").autocomplete({source: function (request, response) {
$.ajax({
url: "/SearchSuggest/SuggestByEmployeeId",
type: "POST",
dataType: "json",
data: { Id: request.term },
error: function (XMLHttpRequest, status, error) {
alert("Error status:(" + status + ") error:(" + error + ")");
},
success: function (data) {
response($.map(data, function (item) {
return { label: item.EmployeeId, value: item.EmployeeId,id: item.EmployeeId };
}));
}
});
},
minLength: 3,
autoFocus: true,
select: function (event, ui) {
$("#IDFilter").val(ui.item.value);
}
});});
jQueryのURLを呼び出している:「/ SearchSug gest/SuggestByEmployeeId "つまりSearchSuggestコントローラの SuggestByEmployeeIdアクションです。
Search.cshtml:有効な社員が「IDFilter」に入力し、検索ボタンをクリックされた場合(ビュー)従業員のコントローラで
@using (Html.BeginForm("BasicSearch", "Employee"))
{
@Html.Label("Employee Id:")
@Html.TextBox("IDFilter")
<input type="submit" value="Search" />
}
BasicSearchアクションメソッドが正常に動作しています。
Visual Studio IDEでコードを実行すると、オートコンプリートが期待される結果を示しています。公開後、このコードをIIS 7.5に配布すると、401-Unauthorizedエラーが発生します。アプリケーションはIISの既定のWebサイトでホストされます。
ここで何が間違っているのでしょうか?
私の間違いとして、jQueryをAJAX GETに更新しました。 [Authorize]属性は、いずれのコントローラーにも適用されていません。問題は依然として続きます。 –