【发布时间】:2021-12-13 14:07:53
【问题描述】:
我正在处理一个 MVC 项目,我们需要在数据服务的请求上发送一个 put 标头以供服务批准。为了避免未经授权的访客使用服务。
目前是这样实现的:
context.SendingRequest2 += new EventHandler<SendingRequest2EventArgs>((s, e) => {
e.RequestMessage.SetHeader("Authorization", (applicationName + " " + applicationId));
});
服务使用void OnStartProcessingRequest(ProcessRequestArgs args) 来检查一些硬编码值,如果标头丢失或不正确,则使用throw new DataServiceException(401, "401 Unauthorized");。
整个事情在本地主机上完美运行。但是当我们将项目上传到测试服务器时,我们会体验到该服务允许获取和创建新操作,但不能更新。
示例: 我启动了网站,它显示了所有列表,其中充满了数据。我单击一个按钮打开创建新窗口,填写表格,然后按保存。没问题。 我按下其中一条记录,打开“编辑”弹出窗口,弹出窗口中填充了记录的现有数据。
但是当我更改某些内容并按保存时,窗口关闭,整个保存过程被调用并顺利运行,直到它应该触发 SendingRequest2 事件并添加标题时到达 SaveChanges()。
我创建了很多调试日志,结果发现没有添加标题。 (不知道为什么)。所以服务自然会拒绝它。
我的问题:
- 可能缺少什么/错误,因为它可以在本地主机上运行,但不能在服务器上运行。
- 还有其他方法可以做到这一点。希望有一些简单易行的东西。
顺便说一句,我们暂时在 .Net 框架 4.5.2 上运行。因为我们有很多遗留的东西需要得到支持。
编辑 如果我提到它用于 MVC5 项目会有所不同吗?
【问题讨论】:
-
可以查看服务器上的证书认证是否失效或过期,时间是否同步。
-
不幸的是它没有那么简单,因为如果是这样的话,我们也无法阅读。该网站也根本不可用。
标签: c# entity-framework-6 wcf-data-services