【发布时间】:2009-02-16 13:58:54
【问题描述】:
我正在尝试从 Javascript 调用 ASP.NET Web 服务,但它无法识别 Web 方法,即使我完全限定了名称,我也试图找出问题所在。
这是我的 web.config 文件的一部分:
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
</httpHandlers>
这是我的网络服务声明
[WebService(Namespace = "http://tempuri.org")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class SavingService : System.Web.Services.WebService
{
[WebMethod]
public static void SaveToDB(string runCode, string container,
string productType, string inspector, string[][] scoregrid, string notes)
这里是 javascript(QCApp4 是我项目的命名空间):
function PrepToSave()
{
....
QCApp4.SavingService.SaveToDB(codev, containerv, prodtype, inspector, scoregrid, notes);
}
scoregrid 在 js 端使用 Array() 命令声明为锯齿状二维数组。这是我对 Web 服务参数的唯一担心。
这里是服务参考:
<asp:ScriptManager id="scriptmng" runat="server">
<Services>
<asp:ServiceReference Path="~/SavingService.asmx" />
</Services>
</asp:ScriptManager>
无论是直接调用 Web 方法,还是像 SavingService.SaveToDB 那样调用它,还是使用完整的限定符,我都会遇到错误。我得到的错误说 SaveToDB 没有定义。 SavingService 未定义,QCApp4 未定义,取决于输入的限定名称的第一部分是什么。
我错过了什么吗?是不是我设置错了?
事实证明我已经将我的 WebMethod 设为静态,当然现在我在错误控制台中遇到错误:
错误:[异常...“'Sys.Net.WebServiceFailedException:Sys.Net.WebServiceFailedException:服务器方法'SaveToDB'失败并出现以下错误:System.NullReferenceException--对象引用未设置为目的。'调用方法时:[nsIDOMEventListener::handleEvent]" nsresult: "0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)" location: "" data: no]
【问题讨论】:
-
您能否提供实际的调用,例如 URL,以及错误?是 500 还是 404 错误?
-
这不是浏览器中可见的错误。我只是使用 Firefox 的错误控制台才发现它的。但结果并没有调用 web 方法。错误控制台中的错误说:错误:未定义 QCApp4 源文件:localhost:2507/Sheet.aspx 行:153
-
实际调用是什么意思?我在与调用网页的项目相同的项目中调用 Web 方法。根据我读过的内容,我可以像调用 Javascript 函数一样进行调用。我的假设是否不正确?
标签: asp.net javascript web-services