2010-04-22 64 views
2

在Visual Studio 2010中我创建了一个新的启用Ajax的WCF服务jQuery的WCF服务MVC2 VS2010 .NET 4.0调用与参数失败

[ServiceContract(Namespace = "TestWCFAjax.Bridge")] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public class Bridge 
{ 
    [OperationContract] 
    public string DoWork() 
    { 
     return "jQuery WCF call without parameters from MVC2 works." ; 
    } 

    [OperationContract] 
    public string DoWork1(string parm) 
    { 
     return parm + " jQuery WCF call with parameters from MVC2 fails"; 
    } 

在主控制器的Index.aspx视图我添加了jQuery:

功能CallWebMethod(){

$.ajax(
{ 
    type: "POST", 
contentType: "application/json; charset-utf-8", 
url: "http://localhost:1452/Bridge.svc/DoWork1", 
dataType: "json", 
data: '{"parm":"test"}', 
error: jqueryError, 
success: function (msg) { 
    alert("back"); 
    var divForResult = document.getElementById("test"); 
    divForResult.innerHTML = "Result: <b>" + msg.d + "</b>"; 
    } 
}) 
} 

function jqueryError(request, status, error) { 
    alert(request.responseText + " " + status + " " + error); 
} 

(使用VS 2010内置的Web服务器)

当我打电话给DoWork时,它工作正常。 当我调用DoWork1时,它总是返回“错误未定义”,并且WCF调用从不发生。

我试过的每个组合: [WebInvoke(方法= “POST”,BodyStyle = WebMessageBodyStyle.WrappedRequest,ResponseFormat = WebMessageFormat.Json,RequestFormat = WebMessageFormat.Json) 我能想到的,它不帮帮我。

我必须缺少一些简单的东西。

有很多关于如何使这项工作,以及“无参数”版本,没有人为我工作。

任何人都可以发布样本MVC2 jQuery 1.4 .NET 4.0 WCF VS2010工作示例或发现可能的错误?

谢谢。

+0

你是如何在wcf config上配置你的基地址的? Bridge.svc是否包含在内?这是强制性的吗? Tks – Pascal 2010-12-17 13:43:08

回答

3

的contentType: “应用程序/ JSON;字符集UTF-8”,

应该是

的contentType: “应用程序/ JSON;字符集= UTF-8”,

+1

这解决了这个问题。回顾: 要在MVC2/.NET 4.0项目中使用jQuery调用支持Ajax的WCF服务,您不需要执行以下任何人建议的操作: 无需Factory =“... WebScriptServiceHostFactory” .SVC 需要WCF方法的[WebInvoke(...)]属性,只需[OperationContract] 不需要web.config中的更改,不需要webHttp行为,不更改端点或其他任何端点行为比enableWebScript 没有MVC2 IgnoreRoute需要。 感谢罗! – 2010-04-22 18:52:09