C#-在Visual Studio外部执行应用程序时出现问题

时间:2019-05-27 18:11:30

标签: c#

我在执行应用程序中的实现时遇到问题。我有一些可以在Visual Studio中正常工作,运行和访问其信息的Web服务。

例如,可以通过IE访问与Web服务地址的连接,并且服务还可以。

我在应用程序中执行可执行文件,当尝试访问Web服务时,出现403(禁止访问)错误。

凭据很好,因为触发错误的行是在身份验证完成后使用Web服务的方法时。

即使在应用程序中以管理员权限运行,它也会显示相同的错误。 WCF服务由本地管理员用户运行。

我已经尝试在与使用该方法相同的范围内进行请求,但未成功。

private SI_Out_SyncClient WebserviceConnection ()
{

    BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);

    binding.MaxBufferSize = 2147483647;
    binding.MaxReceivedMessageSize = 2147483647;

    binding.CloseTimeout = new TimeSpan(1, 5, 0);
    binding.OpenTimeout = new TimeSpan(1, 5, 0);
    binding.SendTimeout = new TimeSpan(1, 5, 0);

    binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
    binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic;

    EndpointAddress address = new EndpointAddress(Library.Environment.GetGlobalString("ENDPOINT"));

    var client = new SI_Out_SyncClient(binding, address);

    client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
    client.ClientCredentials.UserName.UserName = Library.Environment.GetGlobalString("USER");
    client.ClientCredentials.UserName.Password = Library.Environment.GetGlobalString("PASSWORD");

    return client;
}

我希望能够像在调试中一样在应用程序中运行,但是以正确的方式进行,而无需将调试编译模式设置为true。

谢谢!

1 个答案:

答案 0 :(得分:1)

我知道发生了什么事。

就我而言,运行WCF服务的管理员用户无法访问Internet。

一个愚蠢的错误,但是值得注册,因为我在研究中没有找到类似的方向。