22

如何在 ASP.NET MVC Web API 的 URL 末尾将电子邮件作为参数传递?

如下所示:

test.com/api/sales/getcustomerorders/test@test.com

我想将电子邮件地址作为参数传递给 getcustomerorders 操作。

我们可以使用查询字符串传递。但我想像上面一样格式化网址。

谢谢。

4

3 回答 3

36

在 WebApiConfig 中将路由设为“/{email}/”。结尾的“/”会阻止你得到 No HTTP resource was found that match the request URI ...

于 2015-03-19T04:48:21.453 回答
9

这里的问题是您的网址中有句点。

为了使其正常工作,更改您的 web 配置以添加以下两个配置:

<configuration>
  <system.web>
    <httpRuntime relaxedUrlToFileSystemMapping="true" />
  </system.web>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

Haacked 有一篇关于 relexUrlToFileSystemMapping 的博客http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx

我在 IIS express 8 中有一个关于它的错误,需要 runAllManagedModulesForAllRequests: https ://aspnetwebstack.codeplex.com/workitem/226

于 2012-10-11T19:39:11.200 回答
7

Scott Hanselman 在这篇博文中对此进行了介绍。作为替代方案,您可以将电子邮件作为查询字符串参数传递,而不是作为路径的一部分,因为某些字符是不允许的。

于 2012-10-11T16:22:53.647 回答