2015-10-06 96 views
0

我有一个名为Test Controller的控制器,方法名是Test Test Method接受一个参数。但是当参数包含空格斜杠的值时,web api会给出错误。我使用的WEB API 2.如何在uri中使用空格和斜杠处理参数C#WEB API 2

[Route("Test/{companyName}")] 
[AcceptVerbs("GET", "POST")] 
[System.Web.HHttpGet] 

public HttpResponseMessage Test(string companyName) 
{ 
} 

的参数值是BTL /力汽车用品有限公司

我都试过,但什么都没有发生。

<uri> 
    <schemeSettings> 
    <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes" /> 
    </schemeSettings> 
</uri> 

回答

3

你需要URL编码要发送到您的API值,就像这样:

http://yourApiDomainName/api/yourControllerName/?companyName=BTL%20%2F%20Force%20Motor%20Ltd

[SPACE]当URL编码beomes:%20

[正斜杠]当URL编码变成:%2F

你不需要http解码控制器中的值,因为这些值将尽快被框架解码他们到达你的控制器。所以你会在你的控制器里看到'BTL%20%2F%20Force%20Motor%20Ltd'作为'BTL/Force Motor Ltd'。

的URL编码的完整列表,请参阅本: http://www.w3schools.com/tags/ref_urlencode.asp

0

您的问题已无关的WebAPI本身,而是ASP.Net如何处理某些特定的URL。这也可能会影响传入API的点(“。”)。下面是我工作:

此行添加到你的web.config下system.web

<httpRuntime relaxedUrlToFileSystemMapping="true" /> 

菲尔Haacked有很大article是进入更多细节。