在不同的项目中对 .svc 进行 AJAX 函数调用

本文关键字:svc 进行 AJAX 函数调用 项目 | 更新日期: 2023-09-27 17:56:12

我的Visual Studio解决方案中有两个项目:MyApp.WebService和MyApp.WebUI。

我的 WebUI 项目中有一个视图页面/Views/Home/Index.aspx,进行了这个 ajax 调用:

$.ajax({
    type: "GET",
    url: "MyService.svc/HelloWorld",
    data: null,
    processData: true,
    contentType: "application/json",
    dataType: "json", 
    cache: false,
    success: function (data) {
        alert(data.d);
    }
});

我的WebService项目的根目录中有一个名为MyService.svc的.svc文件,其中包含以下函数:

[OperationContract]
[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public string HelloWorld()
{
    return "Hello, world!";
}

收到一条错误消息,指出它找不到我正在调用的网址的位置。我怀疑这与另一个项目中的 .svc 文件有关。我需要做些什么来称呼它吗?

在不同的项目中对 .svc 进行 AJAX 函数调用

如果使用两个不同的项目,则项目托管在不同的端口(VS 的默认值)或不同的虚拟目录中。无论哪种方式,从一个项目到另一个项目的请求都不起作用。如果你在不同的端口中有两个项目(例如,6789 的 MyApp.WebService 和 7890 的 MyApp.WebUI),那么从/Views/Home/Index.aspx(实际上是 http://machine-name:7890/Views/Home/Index.aspx)到 MyService.svc/HelloWorld 的调用将变为 http://machine-name:7890/MyService.svc/HelloWorld,而它应该被调用到 http://machine-name:6789/MyService.svc.HelloWorld.打开页面时运行 Fiddler 将显示正在拨打电话的地址。此外,如果您右键单击VS上的MyService.svc并选择"在浏览器中查看",它将显示应进行调用的确切地址。