我的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文件在另一个项目中有关。有什么我需要做的事情来称呼它吗?
答案 0 :(得分:1)
如果您使用两个不同的项目,那么项目将托管在不同的端口(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并选择“在浏览器中查看”,它将显示调用的确切地址。