问题标签 [wcf-4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1543 浏览

.net-4.0 - Autofac + WCF REST 4.0

我正在构建 WCF 4.0 REST 服务并希望使用 Autofac 作为 DI 容器。显然,我希望能够调用服务类的参数化构造函数(服务合同实现),它接受一堆接口来使用。这些接口将在 Autofac 容器中注册,我希望在创建我的服务类的实例时解析和使用它们(而不是调用默认的非参数化构造函数)。

MVC 控制器也有类似的问题,Autofac MVC 集成包解决了这个问题。是否有任何可用于 WCF REST 4.0 的东西?如果不是,解决我的问题的最佳方法是什么?例如,有没有像 MVC 的 DependencyResolver 之类的东西,我可以设置它来使用 Autofac?

请注意,从 4.0 开始,他们更改了 WCF REST 中的一些概念。例如,现在没有.svc文件,路由足以调用所需的方法。我对 WCF REST 4.0 还很陌生,所以我想在花几天时间实现一些巨大的自定义机制之前向社区征求建议。唉,通过互联网快速搜索并没有为我提供可接受的解决方案。

0 投票
3 回答
1037 浏览

iis - 如何使用基本身份验证将比用户名/密码更多的数据传递给 WCF 4.0 RESTful 服务中的服务方法

要求:

WCF 4.0 IIS 主机使用自定义源 RESTful 进行基本身份验证

从使用UserNamePasswordValidator、通过ServiceAuthorizationManagerIDispatchMessageInspector等,有很多示例和方法来实现基本身份验证。

我面临的问题是,验证实际上将从身份验证后端获取更多信息,而不是是/否答案。我想以某种方式将此信息传递给调用的服务方法(即,它将是完整的用户对象,具有许多属性来控制服务行为)。我想避免第二次调用用户存储来根据用户名检索数据,我可以从安全上下文中访问它。

到目前为止,我找到的最接近的是这个解决方案,它使用WCF REST Starter Kit的 RequestInterceptor,我可以在其中注入一个 ServiceSecurityContext 的子类来承载我的数据,并将 ServiceSecurityContext.Current 转换回服务方法中。

上面的问题是,它是为 WCF 3.5 编写的,我想避免使用 Starter Kit。

问题:知道在链中最合适的位置是什么,所以我可以将数据从验证逻辑传递给服务。或者换一种说法,我可以用我的自定义上下文替换安全上下文以进行负载?还是其他任何载体机制?

我追求的是这种行为:

客户端(可能是浏览器)尝试使用该服务: GET https://myservcer/service/data 服务器以“需要基本身份验证”响应 客户端提供基本身份验证标头并再次发送请求 服务器,基于用户/pass 在标头中,从数据库中拉出一个用户对象。如果找不到用户,请再次请求身份验证如果找到用户,则用户对象以某种方式传递给服务方法所有这一切都应该发生,而无需第二次往返数据库

到目前为止,我的理解是,UserNamePasswordValidator 不会这样做 - 如果我在那里检索 User 对象,则无法传递它。

我可以创建一个自定义的 IAuthorizationPolicy 或 SecurityToken(哪个),然后将 User 对象放入其中。但是......这应该发生在哪里。我可以为此使用 UserNameSecurityTokenAuthenticator 吗?它会返回正确的 HTTP 错误代码来请求凭据吗?我如何/在哪里修改 web.config 以使用我的自定义内容?到目前为止,我看到了如何设置为仅使用自定义 UserNamePasswordAuthenticator。

编辑:请检查我自己的答案以了解我的方法。不过这个问题很好,我得到的答案很有价值。

0 投票
2 回答
864 浏览

wcf - 我的 WCF 服务的自定义“基本”身份验证。休息和RIA。可能的?

我的服务器端包含 WCF4 REST 服务,我将为我未来的 SL4 应用程序添加 RIA 服务。目前我正在做这样的基本身份验证:

等等..你明白了..我在每次请求时都会调用它。如果标题不存在或者我无法验证 UN/Password - 我这样做:

到目前为止,这让我受益匪浅,但我正在重构我的服务器端。为链接服务实施 IoC。创建了自定义 ServiceHost、ServiceHostFactory、InstanceProvider,一切都很好。

现在我需要弄清楚如何使用 WCF 正确处理身份验证和授权,这样我就不必手动检查标头。我确实有我的自定义 MembershipProvider 所以必须有一些方法来处理 UN/PW。

任何指针?我查看了http://www.codeproject.com/KB/WCF/BasicAuthWCFRest.aspx但它使用 RequestInterceptor 并且在 WCF4 中不可用。我找到了 ServiceAuthenticationManager 和 ServiceAuthorizationManager 但没有关于如何编码和连接它们的示例。

有人可以建议我应该走哪条路吗?

0 投票
1 回答
368 浏览

c# - 如何控制 WCF 4 REST 服务的帮助文件生成?

我编写了一个使用 XmlSerializer 的 WCF 休息服务。我还在接受作为服务参数的类型上实现了 IXmlSerializable。序列化效果很好。但是,WCF 默认生成的帮助文件不起作用。当我导航到:myservice/help 我只看到这个:

无法生成架构文档。

那么是否可以控制生成的内容?也许我缺少使帮助文件正确生成的东西。

0 投票
0 回答
66 浏览

wcf-4 - RestFul WCF 4 消耗

我有一个 RestFul WCF 4 服务的问题,我使用了 Visual Studio.net 模板创建了一个,当在 Windows 7 上的 IIS 7 上发布它时,一切正常,我可以从本地机器访问该服务,但是当从局域网上的另一台PC访问服务时,它说“无法连接到服务器”!!!!

我找不到问题,请帮忙

0 投票
1 回答
458 浏览

asp.net-mvc-3 - ASP.NET WCF 和 Routes 的 ActionLink 行为。在 MVC 应用程序中添加

我想在我的 C#.Net 项目中同时托管 WCF 4 和 MVC 3。但是当我为 WCF 添加服务路径时,Html.ActionLink 开始为 MVC 应用程序创建错误的 url。我的路由表创建为:

上面的路由表为 WCF 和 MVC 应用程序创建了正确的访问路径,但Html.ActionLink将编辑链接创建为

代替

如果我省略以 开头的行RouteTable.Routes.AddActionLink则按预期工作(当然不是 WCF)。如何添加 WCF 路由并确保 actionlink 行为不会改变?

0 投票
0 回答
360 浏览

.net - WCF 4.0 和 .net 远程处理

WCF 和 .NET 远程处理在Windows Communication Foundation (WCF) 与现有分布式通信技术(MSDN)的性能比较中进行了可靠的比较。StackOverflow 中有关 .net 远程处理和 WCF 之间的性能问题的许多问题都链接到此页面。但是这种比较现在已经有将近五年的历史了,并且可以追溯到 .NET 3.0。所以在过去的五年里可能发生了一些变化

WCF 4 和 .NET 远程处理之间是否有更新的性能比较?如果 WCF 4 比 WCF 3 快,是否有任何可用信息。

0 投票
1 回答
82 浏览

.net - local WCF client server connection: message that no service is listening

After two years I am coming back to implementing a WCF service. I want for starters to configure a super simple, configuration file free service. I have the servercode below. When I use svcutil to create a proxy all is fine. But when I try to implement a client myself using a ChannelFactory I keep being plagued by the message that no service is listening.... Where is the mistake?

The Client

The Host

0 投票
2 回答
6944 浏览

.net - 如何在 WCF 服务应用程序项目中更改命名空间时运行 WCF 服务?

我已将“ WCF 服务应用程序”项目类型添加到我的 VS 解决方案(4.0)中。现在,出现的默认命名空间是“服务”,如果我运行应用程序(将 WCF 服务应用程序作为启动项目),它工作正常。

现在我已将命名空间更改为XXX.YYY.Service.PartnerPortal,如下所示

以及 IService1 接口也

我还更改了项目属性中的默认命名空间

app.config 文件如下

在尝试运行时,我收到的错误消息是

错误:无法从http://localhost:65192/Service1.svc获取元数据如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅位于http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange 错误 URI:http://localhost:65192/Service1.svc的 MSDN 文档 元数据包含无法解析的引用:'http://localhost:65192/Service1.svc'。服务器没有提供有意义的回复;这可能是由于合同不匹配、会话过早关闭或内部服务器错误造成的。HTTP GET 错误 URI: http://localhost:65192/Service1.svc 下载“http://localhost:65192/Service1.svc”时出错。请求失败并显示错误消息:-- 类型“Service.Service1”,作为 ServiceHost 指令中的服务属性值提供,或在配置元素 system.serviceModel/serviceHostingEnvironment/serviceActivations 中提供。正文 {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} p {font-family:"Verdana";font-weight:normal;color:black;margin-顶部:-5px} b {字体系列:“Verdana”;字体重量:粗体;颜色:黑色;边距顶部:-5px} H1 { 字体系列:“Verdana”;字体重量:正常;字体-大小:18pt;颜色:红色 } H2 { 字体系列:“Verdana”;字体重量:正常;字体大小:14pt;颜色:栗色 } pre {font-family:"Lucida Console";font-size: .9em} .marker {font-weight: bold; 颜色:黑色;文本装饰:无;} .version {颜色:灰色;} .error {margin-bottom:10px;} .expandable { 文本装饰:下划线;字体粗细:粗体;颜色:海军蓝;光标:手;}

“/”应用程序中的服务器错误。

找不到类型“Service.Service1”,作为 ServiceHost 指令中的服务属性值提供,或在配置元素 system.serviceModel/serviceHostingEnvironment/serviceActivations 中提供。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息: System.InvalidOperationException:类型“Service.Service1”,作为 ServiceHost 指令中的服务属性值提供,或在配置元素 system.serviceModel/serviceHostingEnvironment/serviceActivations 中提供。

源错误:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
堆栈跟踪:

/code>
版本信息: ÿMicrosoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.272 --.

我做错了什么以及如何解决?

0 投票
1 回答
146 浏览

wcf - 尝试访问项目类型为“WCF 服务应用程序”的 WCF 服务中的方法时出错

我有一个WCF 服务应用程序项目、一个类库项目(充当服务和客户端之间的代理)和一个Asp.net Web 项目

现在在WCF 服务应用程序项目中,我有方法 GetData(int) [默认的]

我编译了 WCF 服务项目,发现它工作正常,因此将其添加为对类库项目的服务引用。并编写了一个方法来从服务中获取值

现在正在从 Web 应用程序调用此方法。在运行时我遇到异常

在 ServiceModel 客户端配置部分中找不到引用合同“ServiceReference1.IService1”的默认端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素。

错误发生在 Service1Client sc = new Service1Client();

所有的配置文件都准备好了....我应该使用 SVC util 创建代理吗?

我错过了什么?