我在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'参数吗?
这里有什么问题?
由于
P.S。我使用VS2008 SP1,.NET 3.5
答案 0 :(得分:4)
我的问题是我的ASP.NET应用程序中使用Visual Studio向导创建的默认服务配置是一种服务类型。端点绑定是“webHttpBinding”。据我所知,它现在是REST服务的绑定,并且它们没有物理能力来处理参数。对于它们,不支持参数。而我实际需要的是一个'basicHttpBinding',它允许使用out参数。
非常感谢帮助我弄明白的人。
答案 1 :(得分:2)
我找到的答案是:
“out参数的想法是该方法将实例化您传入的空引用.Web服务是无状态的;因此您对作为参数进入Web服务的对象的句柄将不会是与进入Web服务服务器端的那个相同。这样做的性质可以防止出现参数。“
答案 2 :(得分:1)
试试这个:
...
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped)]
public string PublishProfile(out string enrollmentId, string registrationCode)
...
我相信默认的主体样式(裸)只支持单个返回值。
答案 3 :(得分:0)
我认为应该追查Out
参数。
它应该是这样的:
public string PublishProfile(string registrationCode, out string enrollmentId)
另外,您要将字符串设置为null
- 为什么不使用string.Empty
?
答案 4 :(得分:0)