【问题标题】:Make AJAX function call to .svc in different project在不同的项目中对 .svc 进行 AJAX 函数调用
【发布时间】:2011-05-13 00:52:40
【问题描述】:

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

我在 /Views/Home/Index.aspx 的 WebUI 项目中有一个视图页面,进行了这个 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 项目的根目录中有一个 .svc 文件,名为 MyService.svc,其中包含此函数:

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

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

【问题讨论】:

  • 您可以在浏览器中导航到该网址或根 SVC 网址吗?

标签: c# asp.net ajax wcf


【解决方案1】:

如果您使用两个不同的项目,那么这些项目要么托管在不同的端口(VS 的默认设置)中,要么托管在不同的虚拟目录中。无论哪种方式,像您正在做的那样从一个项目到另一个项目的请求都行不通。如果您在不同的端口中有两个项目(例如,MyApp.WebService 在 6789 和 MyApp.WebUI 在 7890),然后从 /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 并选择“在浏览器中查看”,它会向您显示应该进行调用的确切地址

【讨论】:

    猜你喜欢
    • 2014-07-24
    • 1970-01-01
    • 2011-10-29
    • 2014-02-21
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多