私はこれを機能させていましたが、今は機能していません。プロジェクトには複数の開発者が取り組んでいますが、コードは私が作業していたときのように見えます。別の投稿で、URL の書き換えが問題を引き起こす可能性があるというわずかな言及を見ましたが、それが問題なのか、それに対する修正があったのかについては触れませんでした。悲しいことに、これは Web サイト (Web アプリではありません) ですが、機能していました。もう 1 つの考えられる問題は、Ektron CMS を使用していることです。繰り返しますが、URL のエイリアシング/書き換えを除いて、これらすべての変数で動作していたため、これが問題である可能性があります。
javascript 側は、メソッドをインテリセンスで認識します。メソッドを示すアラートも表示されるので、そこにあることがわかります。しかし、次のメッセージが表示されます。サーバー メソッド 'LookupCourseItems' が失敗しました。
<script language="javascript" type="text/javascript">
function CourseLookup(ItemLookup, ResultID) {
alert('Attempting to look up: ' + ItemLookup);
var service = new AjaxDataServices.AjaxService();
service.LookupCourseItems(ItemLookup, onCourseLookupSuccess, onCourseLookupFailure, ResultID);
} // CourseLookup - Method
function onCourseLookupSuccess(result, userContext) {
var o = document.getElementById(userContext);
if (o != null) {
alert('Success!');
o.outerHTML = result;
} else {
alert('Unable to find: ' + userContext);
} // if we were able to find the element to fill
} // onCourseLookupSuccess - Method
function onCourseLookupFailure(result) {
alert(result.get_message());
alert("StackTrace: " + result.get_stackTrace());
alert("StatusCode: " + result.get_statusCode());
alert("ErrorObject: " + result.get_errorObject());
} // onCourseLookupFailure - Method
ScriptManager は次のとおりです。
<asp:ScriptManager ID="ScriptManager" runat="server">
<Services>
<asp:ServiceReference Path="~/AjaxService.svc" />
</Services>
</asp:ScriptManager>
サービスは次のとおりです。
[ServiceContract(Namespace = "AjaxDataServices")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class AjaxService {
[OperationContract]
public string LookupCourseItems(string LookupPair) {
CourseRepository Repository = new CourseRepository(ConfigurationManager.ConnectionStrings["CAMS"].ConnectionString, 7);
string CourseID = "";
string SemesterName = "";
if (LookupPair.Contains(":")) {
string[] Parts = LookupPair.Split(new char[] { ':' },
StringSplitOptions.RemoveEmptyEntries);
CourseID = Parts[0];
SemesterName = Parts[1];
} else {
CourseID = LookupPair;
} // if the Semester was also given
Course Item = Repository.GetSingleCourseInformation(CourseID, SemesterName);
if (string.IsNullOrWhiteSpace(SemesterName))
return Item.ToHTML();
else
return Item.Semesters.Where(s => s.Name == SemesterName).SingleOrDefault().ToHTML();
} // LookupCourseItems - Method
実行すると、最初の "Attemping to look up: 1234" が機能します。次に、onCourseLookupFailure メソッドが呼び出され、この記事のタイトルにあるメッセージを返します。次に、StackTrace は空です StatusCode は 404 で、ErrorObject は null です。
404 は、サービスが見つからないと思わせます。サーバー側でデバッグすると Web サービスに到達しないため、これも論理的に思えます。
提案や考えはありますか?