【问题标题】:Value cannot be null. Parameter name: uri值不能为空。参数名称:uri
【发布时间】:2013-04-04 07:49:04
【问题描述】:

我在尝试调用 Adob​​e Livecyle Soap 服务时收到以下错误:

值不能为空。参数名称:uri

奇怪的是我没有任何名为“uri”的参数。我无法调试此错误,因为该服务甚至无法启动。错误消息是我所拥有的。

这是我传递参数的代码:

BasicHttpBinding binding = 
    new BasicHttpBinding(BasicHttpSecurityMode.Transport);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

LetterService.LETTER_APPLICATIONS_Client client = 
    new LetterService.LETTER_APPLICATIONS_Client(
          binding, 
          new EndpointAddress(
                System.Configuration.ConfigurationManager.AppSettings["URL"]));

【问题讨论】:

  • 您必须出示您的代码。该错误意味着您调用的方法已为其 'uri' 参数传递了一个 null 值。
  • 您可以编辑您的问题以添加更多详细信息。如果您想共享代码,这将非常有用,因为您可以使用{} 按钮对其进行格式化——您无法在 cmets 中做好代码格式化工作。编辑链接位于标签下方的左下方。
  • 几乎可以肯定是 EndpointAddress constructor 引发了异常 - 检查您的配置文件并确保您有一个“LetterMergeURL”appSetting
  • 统一资源标识符 (URI) 用于标识网站或资源,因此这是一个强有力的指标,表明您的错误位于指向此类资源的代码的一部分。这应该可以让您很好地了解在哪里调试代码。

标签: c# wcf visual-studio wcf-binding livecycle


【解决方案1】:

EndpointAddress() 的参数命名为URI(您可以将光标放在( 之后,然后按Ctrl + Shift + Space 以查看参数列表)。

您可以通过替换来验证这是不是问题:

new EndpointAddress(
            System.Configuration.ConfigurationManager.AppSettings["URL"]));

..使用类似以下内容:

new EndpointAddress("http://your.service.uri/");

如果可行,您就知道您的错误与配置相关。

【讨论】:

  • 解决了问题,一切都与配置文件有关。谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
  • 2014-05-17
  • 2016-05-14
相关资源
最近更新 更多