当前位置: 首页 > 知识库问答 >
问题:

从windows服务访问Service Bus 1.1

姜天宇
2023-03-14

我已经为windows server设置了Service bus 1.1,并尝试使用以下代码访问它。

    var sbUriList = new List<Uri>() { new UriBuilder { Scheme = "sb", Host = ServerFQDN, Path = ServiceNamespace }.Uri };
    var httpsUriList = new List<Uri>() { new UriBuilder { Scheme = "https", Host = ServerFQDN, Path = ServiceNamespace, Port = HttpPort }.Uri };

    NetworkCredential credential = new NetworkCredential("<User Name>", "<Password>", "<Domain>");

    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((s, cert, chain, ssl) => { return true; });

    TokenProvider tokenProvider = TokenProvider.CreateOAuthTokenProvider(httpsUriList, credential);
    messageFactory = MessagingFactory.Create(sbUriList, tokenProvider);



    ServiceBusConnectionStringBuilder connBuilder = new ServiceBusConnectionStringBuilder();
    connBuilder.ManagementPort = HttpPort;
    connBuilder.RuntimePort = TcpPort;
    connBuilder.Endpoints.Add(new UriBuilder() { Scheme = "sb", Host = ServerFQDN, Path = ServiceNamespace }.Uri);
    connBuilder.StsEndpoints.Add(new UriBuilder() { Scheme = "https", Host = ServerFQDN, Port = HttpPort, Path = ServiceNamespace }.Uri);

    namespaceManager = NamespaceManager.CreateFromConnectionString(connBuilder.ToString());

if (!namespaceManager.QueueExists(queuename))
{
    namespaceManager.CreateQueue(queuename);
}

如果我从控制台应用程序运行代码,这很好,但是如果我将其放在windows服务中,并在本地服务或本地系统下运行,则代码会在尝试检查队列是否存在于下一行namespaceManager中时引发以下异常。QueueExists(queuename)。

Unexpected exception : System.UnauthorizedAccessException: The remote server returned an error: (401) Unauthorized. Manage claim is required for this operation..TrackingId:5be1365e-b4ae-4555-b81b-dcbef96be9d0_GIE11LT32PD622,TimeStamp:4/19/2015 3:51:28 PM ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized.
   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at Microsoft.ServiceBus.Messaging.ServiceBusResourceOperations.GetAsyncResult`1.<GetAsyncSteps>b__2d(GetAsyncResult`1 thisPtr, IAsyncResult r)
   at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result)
   --- End of inner exception stack trace ---

有人能帮我理解我做错了什么吗?

共有1个答案

汪博达
2023-03-14

终于在我的代码中发现了这个问题,我想我会分享它,以防其他人也有同样的问题。

我的问题是在命名空间中我没有设置令牌如下:

名称空间管理器。设置。TokenProvider=TokenProvider;

因此,它使用了错误的令牌进行连接,因此出现了错误。

 类似资料:
  • 问题内容: 我需要在本地使用数据库。我已经使用Visual Studio 2012在(LocalDB)\ v11.0 Server中创建了数据库。从例如控制台应用程序进行连接时,一切正常。但是我的应用程序是Windows Service。尝试通过以下方式连接到我的数据库输出: 有什么解决办法吗?也许我应该考虑为此设置其他数据库服务器?如果是,如何设置它使其仅在本地可见? 问题答案: 所以我自己找到

  • 我正在windows上的WSL Ubuntu中运行postgresql。一切都很快,我的数据已经加载,我希望通过一些图形界面访问数据库。我在想pgadmin4。 有没有可能通过pgadmin4的windows安装来实现?我在windows上安装了pgadmin4,并试图通过localhost在GUI中以传统方式连接,但没有连接。我想这里可能有一个特殊的方法。

  • 我已经构建了一些自定义封送器,我正在尝试访问消息服务。我有以下代码。 Resources.groovy 我得到以下异常 无法对空对象调用方法getMessage()。Stacktrace如下:java.lang.nullpointerException:无法在org.hri.leaverequest.marshaller.errorsmarshaller$_register_closure1_cl

  • 问题内容: 我们有一个Java Web应用程序,我们需要访问一个Web服务,它是一个https Web服务。所以我将ssl证书添加到Websphere; SSL证书和密钥管理>密钥库和证书> NodeDefaultKeyStore>签署者证书 SSL证书和密钥管理>密钥库和证书> NodeDefaultTrustStore>签署者证书 当应用程序尝试访问Web服务时,将引发如下异常: 我屏蔽了专用

  • 问题内容: 我正在制作一个打算在PC上本地运行的html页面,最好不要在本地服务器上运行(file://)。我还使用jQuery使操作/ AJAX更加容易。 我正在尝试从twitter API加载2个结果,但出现错误。代码如下: 我也尝试了以下代码,但没有改变结果。 我在chrome中(在本地服务器上)收到以下错误: 或(带有file://链接) 有谁知道我该如何解决? 问题答案: 您遇到了同源策

  • 问题内容: 我正在尝试从jQuery客户端访问wcf服务 具体来说,此示例 http://www.codeproject.com/KB/aspnet/WCF_JQUERY_ASMX.aspx#4 当客户端网页与服务位于同一域时,所有方法都可以正常工作 一旦我将客户端网页移到另一个域,它就会中断。无法到达服务,请求失败 所有示例(ASMX,REST和WCF)都会发生这种情况 任何想法如何使这个跨岛工