none
提供的Uri "空间名xxx.servicebus.chinacloudapi.cn"与Service Bus域"servicebus.windows.net"不匹配 RRS feed

  • 问题

  • 大家好,我对Miscrosoft Azure不太熟悉,我在尝试用ServiceBus Relay Service来中继WCF服务时遇到了这个问题(开启服务时抛出异常),描述如下:

    1. 我使用的Azure账户为“世纪互联”提供的1元试用版账号。

    2. 在Windows Azure上创建了一个名为“clauderelayservice”Service Bus 命名空间

    3. 通过WCF来寄宿一个服务,客户可以获得一个字符串,服务定义如下:

        [ServiceContract]
        interface IWho
        {
            [OperationContract]
            string Who();
        }
    
       class Service : IWho
        {
            public string Who() 
            {
                return "I am the server 1.0";
            }
        }

    4. 通过VS2013创建一个控制台应用程序,入口点如下:

    static void Main(string[] args) { var tp = TokenProvider.CreateSharedSecretTokenProvider("owner", "SharedAccessKey密码"); var sh = new ServiceHost(typeof(Service)); var se = sh.AddServiceEndpoint( typeof(IWho), new NetTcpRelayBinding(), "sb://clauderelayservice.servicebus.chinacloudapi.cn/service"); se.Behaviors.Add(new TransportClientEndpointBehavior(tp));

    // 异常 sh.Open(); }

    在Open时产生异常。

    System.ArgumentException was unhandled
      HResult=-2147024809
      Message=The Uri provided clauderelayservice.servicebus.chinacloudapi.cn does not match Service Bus domain: 
      servicebus.windows.net.
      Source=Microsoft.ServiceBus

    Server stack trace: 
           at Microsoft.ServiceBus.TokenProviderHelper.ExtractSolutionFromHostname(String hostname)
           at Microsoft.ServiceBus.TokenProviderHelper.GetStsUri(Uri stsUri, String appliesTo)

    。。。

    不知道是什么原因。

    我查了国外和国内的论坛,目前没有找到答案。

    有没有高手给解答一下,不胜感激!



    Claude

    2015年1月4日 14:48

答案

  • 您好 Claude,

    我看了您提供的视频,在这个视频中,Clemens提供的TokenProvider方法使用的是ACS验证的方式,现在service Bus使用的验证方式为SAS,因此您需要修改其中的验证token即可实现,在我这边已经完美实现,请尝试将一下代码(视频中提供的)

    var tp = TokenProvider.CreateSharedSecretTokenProvider("owner", "/***=")


    方法改为

    var tp = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey", "**=");
    

    请在您项目中进行尝试,如果还有问题,烦请告知。

    Regards,

    Will


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Claude He 2015年1月5日 12:05
    2015年1月5日 5:55
    版主

全部回复

  • 您好 Claude,

    感谢您的反馈!

    我将现在我这边对该问题进行下重现,随后回来给您答复。感谢您的理解。

    Regards,
    Will


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年1月5日 2:34
    版主
  • 你好Will,谢谢!

    实际上我在学这个视频Getting Started with Service Bus. (Final) Part 6: Relay中的Demo。只是不知道我这里哪里出了问题。



    Claude

    2015年1月5日 2:52
  • 您好 Claude,

    我看了您提供的视频,在这个视频中,Clemens提供的TokenProvider方法使用的是ACS验证的方式,现在service Bus使用的验证方式为SAS,因此您需要修改其中的验证token即可实现,在我这边已经完美实现,请尝试将一下代码(视频中提供的)

    var tp = TokenProvider.CreateSharedSecretTokenProvider("owner", "/***=")


    方法改为

    var tp = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey", "**=");
    

    请在您项目中进行尝试,如果还有问题,烦请告知。

    Regards,

    Will


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Claude He 2015年1月5日 12:05
    2015年1月5日 5:55
    版主
  • Will,您好!我的问题已经解决,看来我还是应该多留意一下基础的东西,非常感谢!

    Best Regards


    Claude

    2015年1月5日 12:09