Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 添加参数和向后兼容性?_C#_Asp.net Web Api_Backwards Compatibility - Fatal编程技术网

C# 添加参数和向后兼容性?

C# 添加参数和向后兼容性?,c#,asp.net-web-api,backwards-compatibility,C#,Asp.net Web Api,Backwards Compatibility,使用WebAPI,我有一个restful服务 public SomeValue GetSomeValue() { } 我现在需要传入一个字符串,但它是可选的,默认值也可以: public SomeValue GetSomeValue(string language="EN") { } 我无法更新的旧客户端是否只向GetSomeValue()发送一个调用,并发送一个默认值,仍然有效?或者我是否需要创建另一个方法GetSomeValueForLanguage(string languag

使用WebAPI,我有一个restful服务

public SomeValue GetSomeValue()
{
}
我现在需要传入一个字符串,但它是可选的,默认值也可以:

public SomeValue GetSomeValue(string language="EN")
{
}    

我无法更新的旧客户端是否只向
GetSomeValue()
发送一个调用,并发送一个默认值,仍然有效?或者我是否需要创建另一个方法
GetSomeValueForLanguage(string language)
,通过
GetSomeValue()
内部调用它?

更改该方法以获取默认字符串参数;假设您的路由保持不变(在这种情况下,
language
将被追加到查询字符串中),老客户机仍然可以调用它。如果要将
语言添加为路由令牌,请确保它在路由上是可选的,以便使用操作的默认参数值。

您可以尝试以下操作:

public classs  MyParams
{
   public string language{set;get;}
}
然后将您的方法更改为:

public SomeValue GetSomeValue([FromBody] MyParams obj)
{
     if(String.IsNullOrEmpty(obj.language) obj.language="en";
     //you code
}

如果您的HTTP方法是GET,您应该使用
FormUrl
属性而不是
FromBody
属性

您能在测试环境中尝试吗?