-2

添加此内容以供后代使用,因为我在 Google 搜索中找不到任何具体内容。

问题:

以下方法或属性之间的调用不明确:“System.Web.HttpUtility.UrlEncode(string)”和“System.Web.HttpUtility.UrlEncode(byte[])”

注意:此问题至少特定于在一个签名中接受字符串和在类似签名中接受 byte[] 的重载方法(请参阅上面的 UrlEncode 签名)。

此问题在部分使用 ASP.NET MVC4 时表现为 RuntimeBinderException,但它可能在其他环境中发生。关键是 UrlEncode 有两个重载,运行时绑定器无法确定要使用哪个重载。

4

1 回答 1

0

我的解决方案:

虽然不是最佳的,但将输入转换为正确的类型似乎给运行时绑定器提供了足够的提示,它可以解析要使用的正确方法签名。

例如,这里是一些引发上述异常的“失败”代码(来自 MVC4 部分 - 代码来自承包商,我并不是建议这是创建锚标记的最佳方式 - 但它确实说明了具体问题很好):

<a rel="nofollow"
   href="https://twitter.com/share?text=Check%20this%20out!%20@(ViewBag.Title)%20
   @(HttpUtility.UrlEncode(Request.Url.AbsoluteUri))%20%40codinghorror"
   target="_blank">
  twitter
</a>

在这里,用强制转换稍微重写:

<a rel="nofollow"
   href="https://twitter.com/share?text=Check%20this%20out!%20@(ViewBag.Title)%20
   @(HttpUtility.UrlEncode((string)Request.Url.AbsoluteUri))%20%40codinghorror"
   target="_blank">
  twitter
</a>

在这个修复之后,我重新加载了有问题的页面,果然,噗!,它工作了。

快乐的足迹!

于 2013-05-13T20:35:34.277 回答