Wcf 基本身份验证

2024-01-15

通过简单的测试 Wcf 服务使用基本身份验证时遇到一些问题。我遇到了一个例外:

无法激活请求的服务“http://qld-tgower/test/Service.svc”。有关详细信息,请参阅 > 服务器的诊断跟踪日志。

在跟踪日志中它显示:

在主机(“Basic”)上配置的身份验证方案不允许在绑定“BasicHttpBinding”(“Anonymous”)上配置的身份验证方案。请确保 SecurityMode 设置为 Transport 或 TransportCredentialOnly。此外,可以通过 IIS 管理工具、应用程序配置文件中 元素的 ServiceHost.Authentication.AuthenticationSchemes 属性、更新绑定上的 ClientCredentialType 属性来更改此应用程序的身份验证方案,从而解决此问题。或者通过调整 HttpTransportBindingElement 上的 AuthenticationScheme 属性。

但是当我使用不正确的用户名和密码时我不明白它说的IS使用基本身份验证?

HTTP 请求未经客户端身份验证方案“Basic”的授权。从服务器收到的身份验证标头是“Basic Realm=”qld-tgower”。

这是我的 web.config 详细信息

<system.serviceModel>
<services>
  <service name="WcfService"
      behaviorConfiguration="Behavior">
    <endpoint address="http://QLD-TGOWER/test/Service.svc"
              binding="basicHttpBinding"
              bindingConfiguration="httpBinding"
              contract="IService" />
  </service>
</services>
<diagnostics>
  <endToEndTracing activityTracing="false" messageFlowTracing="true" propagateActivity="true"></endToEndTracing>
</diagnostics>
<bindings>
  <basicHttpBinding>
    <binding name="httpBinding">
      <security mode="TransportCredentialOnly">
        <transport  clientCredentialType="Basic" proxyCredentialType="Basic">
        </transport>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>

这是我的 App.config

<system.serviceModel>
    <diagnostics>
      <endToEndTracing activityTracing="true" />
      <messageLogging logMessagesAtTransportLevel="true" />
    </diagnostics>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService" >
          <security mode="TransportCredentialOnly">

            <transport clientCredentialType="Basic" proxyCredentialType="Basic"></transport>
            <message clientCredentialType="UserName" />
          </security>

        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://QLD-TGOWER/test/Service.svc" binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IService" contract="ServiceReference1.IService"
        name="BasicHttpBinding_IService" />
    </client>
</system.serviceModel>

我的测试应用程序

private static void Main(string[] args)
{
    var proxy = new ServiceClient("BasicHttpBinding_IService");
    var clientCredentials = proxy.ClientCredentials;
    clientCredentials.UserName.UserName = "username";
    clientCredentials.UserName.Password = "password";
    var res = proxy.GetData(1);
    Console.WriteLine(res);
    Console.WriteLine("Done");
    Console.ReadKey(true);
}

还有我的服务

public class Service : IService
{

   public string GetData(int value)
   {
       return string.Format("You entered: {0}", value);
   }
}

我在这里缺少什么吗?


更改服务的名称和合同以包含命名空间。

另外,删除端点地址(将其设置为“”)并且不要在传输标记中包含 proxyCredentialType。

web.config 的最终结果应该如下所示

  <system.serviceModel>

    <services>
      <service name="MyNameSpace.MyService" behaviorConfiguration="asdf">
        <endpoint address="" binding="basicHttpBinding" 
            bindingConfiguration="httpBinding" contract="MyNameSpace.IMyService" />
      </service>
    </services>

    <diagnostics>
      <endToEndTracing activityTracing="true" messageFlowTracing="true" 
          propagateActivity="true">
      </endToEndTracing>
    </diagnostics>

    <bindings>
      <basicHttpBinding>
        <binding name="httpBinding">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Basic" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>

    <behaviors>
      <serviceBehaviors>
        <behavior name="asdf">
          <!-- To avoid disclosing metadata information, set the value below to 
               false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, 
               set the value below to true.  Set to false before deployment to avoid 
               disclosing exception information -->
          <serviceDebug  includeExceptionDetailInFaults="true" />

        </behavior>
      </serviceBehaviors>
    </behaviors>

    <serviceHostingEnvironment multipleSiteBindingsEnabled="false"/>

  </system.serviceModel>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Wcf 基本身份验证 的相关文章

  • WCF 中的动态 ExpandoObject

    尝试使用枚举类型进程和动态数据的操作来 Ping Pong 我的服务 ServiceContract CallbackContract typeof iStackoverflowCallBack public interface iStac
  • WCF 消费者网站:ChannelFactory.Endpoint 上的 Address 属性为 null。 ChannelFactory 的 Endpoint 必须指定有效的地址

    我有一个简单的 WCF 服务 它在本地主机上运行良好 由另一个本地网站使用并返回数据 现在我将我的服务上传到我们的主机 更改 web config 中的适当地址 当客户端调用它时它会中断 Error ChannelFactory Endpo
  • 在 WCF 中序列化 IDictionary

    我们有一个现有的应用程序 其中一个 DTO 对象的属性类型为IDictionary
  • 通过 WCF 提供类对象的数组或列表

    任何提供自定义类对象列表或数组的 WCF 客户端服务器示例都会对我有所帮助 但这是我到目前为止所得到的 这是我想提供的班级系统 namespace NEN Server FS Serializable public class XFS pr
  • WCF 服务中无法解释的程序集负载 (IIS 7)

    我正在开发一个新的 WCF Web 服务 该服务将托管在现有的 ASP NET Web 应用程序中 当我尝试运行服务的 svc 文件时 出现异常 无法找到程序集的文件 无法加载文件或程序集 System IdentityModel Vers
  • 工作组模式下 WCF MSMQ 的配置

    在尝试部署服务时 我发现它无法启动 因为 MSMQ 处于工作组模式 我创建了一个专用队列 并更改了配置文件以引用它 但 WCF 服务主机拒绝以以下消息启动 绑定验证失败 因为绑定的 MsmqAuthenticationMode 属性设置为
  • 无法在 Windows 8 上的 IIS 中提供 WCF 服务

    当我尝试在 Windows 8 计算机中的 IIS 上提供 WCF 服务时 出现众所周知的错误 由于扩展配置的原因 无法提供您请求的页面 如果页面是脚本 请添加处理程序 如果应下载该文件 请添加 MIME 映射 旧的解决方法是运行aspne
  • 错误:在 Visual Studio 2013 中找不到类型或命名空间名称“ApplicationUser”

    我正在学习 RESTful WCF 服务 教程 但是当我构建我的应用程序时 我收到此错误 找不到类型或命名空间名称 ApplicationUser 您是否缺少 using 指令或程序集引用 c users basma documents v
  • 服务具有零个应用程序(非基础设施)端点

    我最近创建了一个WCF服务 dll 和一个服务主机 exe 我知道我的 WCF 服务工作正常 因为我能够成功地将服务添加到 WcfTestClient 但是 当我从服务主机 exe 使用 WCF 时 我似乎遇到了问题 我可以将对 WCF d
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 使用 HttpClient 调用 WCF 服务

    我必须调用 WCF 服务 WCF 服务已开启 我可以编辑其配置 我想创建一个调用该服务的客户端 我无法将服务引用添加到我的客户端 因此我尝试使用 HttpClient 调用它 客户端代码 using var client new HttpC
  • 常见 WCF 异常:连接意外关闭

    我有三个项目 一种是 WCF 服务项目 一种是 WPF 项目 一种是 Microsoft 单元测试项目 我使用如下所示的数据对象设置 WCF 服务项目 DataContract public enum Priority Low Medium
  • 如何在自托管 WCF 中获取多部分表单数据?

    我已经搜索了很长一段时间 但没有找到我要找的东西 我在 Windows 应用程序中自行托管了一个 http WCF 现在 在我的服务方法之一中 我需要接收一个文件和一些表单数据字段 在类似的问题中 情况要么发送一个文件 这是通过流数据然后转
  • ChannelFactory重用策略

    我一直在读到 ChannelFactory 的创建是昂贵的 除非有技术原因不这样做 否则应该在可能的情况下重用 ChannelFactory 或者通过某种方式缓存它们 或者使用工厂的静态实例 根据您的经验 您发现哪些 ChannelFact
  • 为什么WCF中不允许方法重载?

    假设这是一个ServiceContract ServiceContract public interface MyService OperationContract int Sum int x int y OperationContract
  • WCF 服务调用包装器

    为 WCF 服务调用创建包装器的最佳实践是什么 我认为有必要 为了在同一个地方监视所有呼叫 我正在考虑使用这种代码 这是正确的想法吗 RetType t ServiceExecutionContext
  • 如何在 Xamarin.Forms 项目中使用 .netstandard 中的 WCF 服务?

    我创建了一个 Xamarin Forms 项目 其中 netstandard 2 0 作为 PCL 项目 我正在尝试在该项目中使用 WCF 服务 我已经为 WCF 服务添加了连接服务 当我尝试调用服务中提供的任何方法时 它会给出如下错误 S
  • 如何在WCF请求和响应的soap标头中添加MessageID?

    企业移动设备管理协议在HTTP POST 请求中显示以下soap xml 如何将我的 Web 服务定义为要包含的肥皂头Action MessageID ReplyTo 和 To在请求和响应中 我尝试在 MessageCOntract 中定义
  • 在 WCF customBinding 中接受 UsernameToken 和 BinarySecurityToken

    我正在使用 customBinding 端点构建 WCF Web 服务 但在接受另一方发送给我的 WS Security 标头时遇到困难 我们都遵循英国国家卫生服务局制定的规范 因此我无法修改这些要求 基本结构
  • 超出 WCF 最大并发会话数

    我的公司申请遇到了问题 我将总结系统的关键要素 我公司的系统几年来一直在 Windows XP 和 7 Home Pro Basic 机器上运行 它是用 NET 4 0 编写的 基于 WCF 它使用默认的限制值 MaxConcurrentS

随机推荐

  • 高阶函数有哪些有趣的用途?

    我目前正在学习函数式编程课程 我对高阶函数和一等公民函数的概念感到很有趣 然而 我还想不出许多实际有用的 概念上令人惊奇的或只是简单有趣的高阶函数 除了典型的 相当沉闷的map filter等功能 您知道此类有趣函数的示例吗 也许是返回函数
  • 图像和 div 的最大可能尺寸扩展以填充空间

    我确信以前有人问过这个问题 但我找不到确切问题的答案 我想要一个非常简单的布局 header content graphic where 页眉高度由字体大小设置 内容有固定的最小宽度 考虑到这两个限制并保持纵横比 图形尽可能大 即 它将与屏
  • jqGrid 子网格的 JSON 对象

    这是我关于 jqGrid 子网格的 JSON 数据的第三个问题 到目前为止我还没有得到任何评论 请有人帮忙 my 第一个问题 https stackoverflow com questions 6647302 subgrid in jqgr
  • GetHashCode() 经常重写碰撞方式

    我正在使用 Unity 而 Unity 中没有元组 因此我创建了自己的元组类来工作 因为我的字典需要它 Dictionary
  • 从特定链接读取流

    我需要使用 OpenCV 库从 mjpeg 读取流 更详细的信息 我需要阅读http 194 126 108 66 8887 但是当我尝试这样做时 VideoCapture ipCam ipCam open http 194 126 108
  • 是否可以对网页中的 iframe 进行截图?

    我正在尝试截取网页中 iframe 的屏幕截图 在我的特定情况下 iframe 包含我的一位客户商店的街景视图 据我搜索和阅读 我没有找到任何解决方案 我知道有像这样的 JavaScript 库Html2Canvas and Canvas2
  • 如何将数据库从一台 MongoDB 服务器复制到另一台服务器?

    我在不同的服务器上有两个 mongodb 都以 auth 现在我想将数据库从一台服务器复制到另一台服务器 gt mongo gt use admin gt db copyDatabase mydb mydb another server 表
  • Python中Matlab的datenum(datestring)的等价函数

    在 Matlab 中 当我运行 datenum http de mathworks com help matlab ref datenum html 功能如下 datenum 1970 1 1 我得到以下输出 719529 我试图找到等效的
  • 如何升级 Windows 10 中的 Python 安装?

    我的一个 LAB 工作站上安装了 Python 2 7 11 我想将 Python 至少升级到 3 5 我该怎么做呢 我是否应该完全卸载 2 7 11 而不是安装新版本 有办法更新吗 更新是个好主意吗 Python 的每个次要版本 即任何
  • 如何重置 COMP_WORDBREAKS 而不影响其他完成脚本?

    当我实现 bash 自动完成功能时 有些事情让我感到困惑 我将把它放入 etc bash completion d 为了实现某些功能 我想删除分词字符冒号 来自变量 COMP WORDBREAKS并添加斜杠 开始于 COMP WORDBRE
  • 如何使用 iGraph 在 R 中挖掘主题

    我正在尝试使用该包在 R 中挖掘 3 节点图案igraph 我想检索图中每个单独顶点的图案数量 这在 graph motifs 函数中似乎不可能 因此 对于示例图 testGraph barabasi game 10 m 5 power 2
  • 将 TFS 项目转换为 git 存储库的最佳方法是什么

    我知道 VS2012 中对 git 的支持已经有了很多进展 我们目前有一个 Team Foundation Server 2012 更新 2 其中我们的所有项目都以经典 TFS 格式存储 我们希望从 TFS 迁移到纯 git repo 系统
  • 添加内存地址错误

    这无法在 VSC 2008 中编译 void toSendMemory2 toSendMemory 4 我不知道为什么 尽管我确信我这样做很愚蠢 P 当你添加N to a T 指针将增加sizeof T N bytes sizeof voi
  • Visual Studio 2013 C++ lambda 捕获参数包

    目前 Visual Studio 2013 update 2 不支持完整的 C 11 其中一项功能是捕获 lambda 中的参数包 有没有一种简单的方法可以解决这个问题 或者我是否必须放弃 Visual Studio 并使用兼容的编译器 例
  • IE7:如何让TD浮动?

    我想要一套 td s 在 IE7 中向左浮动 如果窗口太小 它们应该中断到下一行 CSS table width 100 td border 1px solid red tr f td width 500px float left HTML
  • 托管 Angular 2 应用程序

    我是新来的Angular 2 我认识楼主Angular 1 x在共享主机上 例如GoDaddy 但我不知道如何发布Angular 2应用程序 例如我有这个结构文件夹 angular2 quickstart app app component
  • 如何使用所有模型的通用 Trait 在 Laravel 中实现 eloquent 事件

    我在用拉拉维尔 5 4创建一个网络应用程序 我创建了一个特征来实现创建 更新 删除和恢复雄辩事件的事件 我创建了一个trait如下
  • 如何使用 AngularJS 更改一个 div 上的类,同时将鼠标悬停在另一个 div 上?

    我想使用 AngularJS 指令更改一个 div 的类 同时将鼠标悬停在另一个 div 上 这是我到目前为止所拥有的http jsfiddle net E8nM5 38 http jsfiddle net E8nM5 38 HMTL di
  • 当indexedDB被阻止时应用程序应该如何反应

    我在另一个地方被告知question https stackoverflow com questions 39997018关于检测阻止和解除阻止事件 阻止的打开 或删除 不会被取消 只是 被阻止 一旦解除阻止 打开 或删除 将继续 我想知道
  • Wcf 基本身份验证

    通过简单的测试 Wcf 服务使用基本身份验证时遇到一些问题 我遇到了一个例外 无法激活请求的服务 http qld tgower test Service svc 有关详细信息 请参阅 gt 服务器的诊断跟踪日志 在跟踪日志中它显示 在主机