.net WCF:不支持没有参数的操作

.net WCF:不支持没有参数的操作,.net,rest,wcf,.net,Rest,Wcf,我在WebApplication项目中创建了一个简单的WCF服务 [ServiceContract(Namespace = "http://my.domain.com/service")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class MyService { [OperationContract] publ

我在WebApplication项目中创建了一个简单的WCF服务

[ServiceContract(Namespace = "http://my.domain.com/service")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService
{
    [OperationContract]
    public string PublishProfile(out string enrollmentId, string registrationCode)
    {
        enrollmentId = null;
        return "Not supported";
    }
内置-所有内容都已成功编译

之后,我尝试在浏览器中打开服务,出现以下错误:

合约“MyService”中的操作“PublishProfile”指定了一个“out”或“ref”参数。不支持带有“out”或“ref”参数的操作

我不能使用“out”参数吗

这里怎么了

谢谢


另外,我使用VS2008 SP1、.NET 3.5,我认为
Out
参数应该在后面

应该是这样的:

public string PublishProfile(string registrationCode, out string enrollmentId)

另外,您正在将字符串设置为
null
-为什么不使用
string.Empty

请参见我找到的答案是:

“out参数的概念是,该方法将实例化传入的空引用。web服务是无状态的;因此,作为参数进入web服务的对象上的句柄将与进入web服务服务器端的句柄不同。这种性质防止了out参数。”

试试这个:

...
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped)]
public string PublishProfile(out string enrollmentId, string registrationCode)
...

我相信默认主体样式(bare)只支持一个返回值。

在我的案例中,问题是使用Visual Studio向导在ASP.NET应用程序中创建的默认服务配置是服务类型。端点绑定是“webHttpBinding”。据我所知,现在它是REST服务的绑定,它们只是没有物理能力来处理参数。对于它们,不支持out参数。我实际上需要的是一个“basicHttpBinding”,它允许计算参数


非常感谢所有帮助我解决这个问题的人。

这只是一个存根…但我可能需要知道更多为什么字符串。Empty是更好的更改“outed”参数的位置没有帮助。对于
string.Empty
,我有一个很好的答案。关于您最初的问题,我实际上很困惑为什么会出现错误…我只是创建了一个示例asp.net项目并添加了一个WCF项目并对此进行了测试,但我无法重新创建此错误。是否可以发布一个示例?我在VS2010 for.net 3.5 Framework中尝试了此示例。这里有两个链接需要进一步研究:所以?这些链接确实建议使用“out”参数。我看到了它,但没有看到与当前问题相关的任何内容。您能理解吗请澄清?根据我的经验,我使用了“out”参数(在另一个项目中)。来自另一个链接的想法(见schellack的答案)表明:out参数在WCF中确实有意义,我建议使用out参数。Yee,,,,我没有提到我正在使用REST服务。但实际上,我自己并不知道这一点。