gpt4 book ai didi

c# - WCF REST 服务在本地运行良好,在远程服务器上出现未授权 (401) 错误,而该服务具有匿名访问权限

转载 作者:行者123 更新时间:2023-11-30 12:32:10 25 4
gpt4 key购买 nike

我已经在网上漫游,但找不到任何解决方案。
现在,WCF 服务在本地完美运行,而在远程服务器上,它会为 POST 调用抛出 401(未经授权)Web 异常。 GET 工作正常。

Implementation Details :
On the Remote Server-
IIS : 6.0
.NET : 4.0
Calling App : WPF app.

On the Local Server-
IIS : 7.0
.NET : 4.0
Calling App : WPF app.

该服务在 web.config 中为 WCF rest 指定了匿名访问权限。对于身份验证我们已经实现了一个 AuthManager 类,它使用硬编码的用户名和密码对请求进行身份验证。

在调用调用​​者时添加网络凭据。

调用本地网络时的header是:

Authorization: Basic dG9ueXXXXXXX

而在调用服务器时:

Authorization: Negotiate TlRMTVNTUAABAAAAl4IIXXXXXXX

这就是我觉得可疑的地方。

下面给出了服务的 Web.config:

    <?xml version="1.0" encoding="UTF-8"?>
<configuration>
<connectionStrings>
<add name="SqlServerConnectionString" connectionString="Data Source=BHUVINT\SQL2008R2;Initial Catalog=CPNS;User ID=sa;Password=orion@123"/>
</connectionStrings>
<system.diagnostics>
<trace>
<listeners>
<add name="myListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="Application" />
</listeners>
</trace>
</system.diagnostics>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<machineKey decryption="AES" decryptionKey="0CA3EFAF0F7A5E7A62681C0BF656EE0ECE31ACEE3E1023BA3FAD20EA5F199DE8" validation="SHA1" validationKey="3E4528C0FFE94A75DF02052B358BD9DE40800DD89DE62168764FF0DCE537184F0535D5D9AD66DEDC97DC1ABFF7FA540B4DFD82E5BB196B95D15FF81F75AD5328" />
</system.web>

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Mg">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="Mg" name="ApmWcfServiceWebRole.Push">
<endpoint binding="webHttpBinding" name="firstBinding" contract="ApmWcfServiceWebRole.IPushService" />
</service>
<service behaviorConfiguration="Mg" name="ApmWcfServiceWebRole.WP7Device">
<endpoint binding="webHttpBinding" name="secondBinding" contract="ApmWcfServiceWebRole.IWP7Service" />
</service>
<service behaviorConfiguration="Mg" name="ApmWcfServiceWebRole.iOSDevice">
<endpoint binding="webHttpBinding" name="thirdBinding" contract="ApmWcfServiceWebRole.IIOSService" />
</service>
<service behaviorConfiguration="Mg" name="ApmWcfServiceWebRole.AndroidDevice">
<endpoint binding="webHttpBinding" name="fourthBinding" contract="ApmWcfServiceWebRole.IAndroidService" />
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
</serviceHostingEnvironment>

</system.serviceModel>

<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>

编辑:AuthManager 仅在需要检查的 POST 中被调用,而这些是失败的。

编辑 2:我在 AuthManager 中添加了一个 Trace,它没有收到凭据,它得到一个空白值。似乎问题在于传递凭据。

提前致谢。

最佳答案

问题已解决:

我启用了匿名访问,但它启用了对 Windows 身份验证的检查,我将其删除并开始工作 Solution

关于c# - WCF REST 服务在本地运行良好,在远程服务器上出现未授权 (401) 错误,而该服务具有匿名访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11844248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com