Наконец-то все заработало. Вот как я это сделал. Не уверен, в чем проблема ... хотя, следуя описанному ниже процессу, добился цели.
Шаг 1. Выполните пошаговое руководство на http://msdn.microsoft.com/en-us/library/bb532367(v=vs.90).aspx,, используя новый проект веб-сайта.
Оно работает. Я назову это модельным проектом.
Шаг 2. Создайте файлы в моем существующем веб-приложении и скопируйте весь код из модельного проекта:
- создал WebService HelloWorld.asmx (студия также предоставляет мне вложенный файл Helloworld.asmx.vb) в корневой папке моего проекта. Это отличается от модельного проекта, потому что когда я создал веб-сервис в этом проекте, он помещал .asmx в мою корневую папку, но вставлял .asmx.vb в папку App_Code. Не уверен, должен ли я перемещать это вручную или что-то? В прошлом, когда я пытался использовать папки App_Code или App_data с этим веб-приложением, все шло к черту ...
Шаг 3. Отредактируйте веб-сервис для работы с моим веб-приложением вместо веб-сайта:
- Пространство имен Samples.Aspnet закомментировано, но не заменено другим пространством имен, поскольку мое приложение имеет пространство имен по умолчанию «Fubar», которое совпадает с именем проекта моего приложения.
Ниже приведен код в HelloWorld.asmx.vb в корневой папке моего веб-приложения:
Imports System
Imports System.Web
Imports System.Collections
Imports System.Web.Services
Imports System.Web.Services.Protocols
'Namespace Samples.Aspnet
<WebService([Namespace]:="http://mycompany.org/"), _
WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1), _
System.Web.Script.Services.ScriptService()> _
Public Class HelloWorld
Inherits System.Web.Services.WebService
Public Sub New()
End Sub 'New
'Uncomment the following line if using designed components
'InitializeComponent();
<WebMethod()> _
Public Function Greetings() As String
Dim serverTime As String = _
String.Format("Current date and time: {0}.", DateTime.Now)
Dim greet As String = "Hello World. <br/>" + serverTime
Return greet
End Function 'Greetings
End Class 'HelloWorld
'End Namespace
А вот код в HelloWorld.asmx, также в корневой папке:
<%@ WebService Language="vb" CodeBehind="HelloWorld.asmx.vb" Class="Fubar.HelloWorld" %>
Шаг 4. Создайте js "HelloWorld.js", вставьте его в корневую папку, как в проекте модели, и вставьте код из проекта модели. Сделайте одно редактирование, чтобы соответствовать пространству имен моего приложения. Вот полученный код:
var helloWorldProxy;
// Initializes global and proxy default variables.
function pageLoad() {
// Instantiate the service proxy.
// helloWorldProxy = new Samples.Aspnet.HelloWorld();
helloWorldProxy = new Fubar.HelloWorld();
// Set the default call back functions.
helloWorldProxy.set_defaultSucceededCallback(SucceededCallback);
helloWorldProxy.set_defaultFailedCallback(FailedCallback);
}
// Processes the button click and calls
// the service Greetings method.
function OnClickGreetings() {
var greetings = helloWorldProxy.Greetings();
}
// Callback function that
// processes the service return value.
function SucceededCallback(result) {
var RsltElem = document.getElementById("Results");
RsltElem.innerHTML = result;
}
// Callback function invoked when a call to
// the service methods fails.
function FailedCallback(error, userContext, methodName) {
if (error !== null) {
var RsltElem = document.getElementById("Results");
RsltElem.innerHTML = "An error occurred: " +
error.get_message();
}
}
if (typeof (Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
Шаг 5. Добавьте код в мой тег ScriptManager на моей главной странице. Это соответствует коду модельного проекта в Default.aspx;
тег ScriptManager ниже идентичен тегу в модельном проекте:
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server" ID="ScriptManager">
<Services>
<asp:ServiceReference path="~/HelloWorld.asmx" />
</Services>
<Scripts>
<asp:ScriptReference Path="~/HelloWorld.js" />
</Scripts>
</asp:ScriptManager>
Шаг 5. Добавьте элементы управления на мою тестовую страницу, как в Default.aspx в модельном проекте:
<div id="divTestWebServices">
<button id="Button1" onclick="OnClickGreetings(); return false;">Greetings</button>
<div>
<span id="Results"></span>
</div>
</div>
Шаг 6. Запустите Fubar и перейдите к тестовой странице, затем нажмите кнопку.
Работает !!! Я не знаю, почему это не сработало раньше, но через три дня я готов идти дальше ...