ASMX Web 服务调用请求失败,HTTP 状态 401:未经授权

问题描述 投票:0回答:1

在 Episerver 项目中,从一台服务器上的网站向另一台服务器上的 ASMX-web 服务进行调用。 用户调用在 IIS 7 中具有所有权限,可以从文件夹中写入、创建和检索文件。

进行此调用时会出现以下错误消息:

RemotePublishForLedigeStillinger.DataFactoryService.RawPage rawPageLedigeStillingerRemote = dfService.GetDefaultPageData(pageRef, Int32.Parse(pageidOfLedigeStillingar));

如何解决以下错误?:

Detailed error information (authorized by permissions to functions)
Error occured   01.10.2012 14:35:07
User IP 172.29.2.84
User Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1
Url ....
Referer ...

The request failed with HTTP status 401: Unauthorized.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Net.WebException: The request failed with HTTP status 401: Unauthorized.

Source Error:

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.

Stack Trace:


[WebException: The request failed with HTTP status 401: Unauthorized.]
   System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) +431289
   System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) +204
   RemotePublishForLedigeStillinger.DataFactoryService.DataFactoryService.GetDefaultPageData(PageReference pageLink, Int32 pageTypeID) in C:\Programmering\RemotePublishTest\RemotePublishTest\Web References\DataFactoryService\Reference.cs:147
   RemotePublishForLedigeStillinger.Program.PublishPageToRemoteService(PageData pageLedigeStillingerOriginal) in C:\Programmering\RemotePublishTest\RemotePublishTest\Program.cs:143
   EPiServer.Templates.RelatePlus.Pages.JobAd.RemotePublishPage(PageData pageToPublish) in C:\Repo\Projects\dikt.intranett\www\Templates\RelatePlus\Pages\JobAd.aspx.cs:125
   EPiServer.Templates.RelatePlus.Pages.JobAd.Godkjent_OnClick(Object sender, EventArgs e) in C:\Repo\Projects\dikt.intranett\www\Templates\RelatePlus\Pages\JobAd.aspx.cs:110
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

IIS 日志显示:

2002:5100:9dbc:8000:0:5efe:10.50.0.227, -, 10/1/2012, 14:52:20, W3SVC2, DRINVS253, 2002:5100:9dbc:8000:0:5efe:10.50.0.160, 15, 775, 1700, 401, 0, POST, /WebServices/DataFactoryService.asmx, -,
2002:5100:9dbc:8000:0:5efe:10.50.0.227, dr-2\epi.admin, 10/1/2012, 14:52:20, W3SVC2, DRINVS253, 2002:5100:9dbc:8000:0:5efe:10.50.0.160, 0, 806, 1700, 401, 0, POST, /WebServices/DataFactoryService.asmx, -,

来自部署 Web 服务的服务器上的 web.config 的一些数据。:

<episerver.basicAuthentication sendBasicChallenge="true" basicRealm="" />
    <system.web>
      <httpModules>
    <add 
        name="BasicAuthentication" 
        type="EPiServer.Security.BasicAuthentication, EPiServer" /> 

   </httpModules> 

      <httpRuntime maxRequestLength="1000000" />
      <authorization>
        <allow roles="Administrators,WebServices,dr-2\epi.admin" />
        <deny users="*" />
      </authorization>
    </system.web>
    <system.webServer>

        <modules runAllManagedModulesForAllRequests="true">
         <add name="BasicAuthentication" type="EPiServer.Security.BasicAuthentication, EPiServer" />
        </modules> 

    <handlers>
        <clear />
        <add name="webresources" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" />
        <add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
        <add name="wildcard" path="*" verb="*" type="EPiServer.Web.StaticFileHandler, EPiServer" />
      </handlers>
    </system.webServer>

补充: 用户是“dr-2 pi-admin”。

其登录详细信息被发送到服务器:

public DataFactoryService() {
    this.Url = System.Configuration.ConfigurationManager.AppSettings[urlForLedigeStillingerRemoteServiceStringFromAppSettingsGlobal];
    this.UseDefaultCredentials = true;

        //.Default.RemotePublishForLedigeStillinger_DataFactoryService_DataFactoryService;
    if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
        this.UseDefaultCredentials = true;
        this.useDefaultCredentialsSetExplicitly = false;
    }
    else {
        this.useDefaultCredentialsSetExplicitly = true;
    }
}

删除“拒绝”标签后,请求将被进一步处理,我知道收到此错误:

或发生于 01.10.2012 15:39:56 用户 IP 172.29.2.84 用户 代理 Mozilla/5.0(Windows NT 6.1;WOW64;rv:15.0)Gecko/20100101 火狐/15.0.1 网址[网址已删除]

引用者[网址已删除] System.Web.Services.Protocols.SoapException:服务器无法 处理请求。 ---> EPiServer.Core.EPiServerException:用户执行 没有访问Web的“Permission.WebServiceAccess”访问权限 远程站点上的服务,供用户使用 EPiServer.WebServices.DataFactoryService.ValidateWebServiceAccess()
在 EPiServer.WebServices.DataFactoryService.GetDefaultPageData(PageReference pageLink, Int32 pageTypeID) --- 内部异常堆栈跟踪结束 --- 描述:当前 Web 请求执行期间发生未处理的异常。请查看堆栈跟踪以了解更多信息 有关错误及其在代码中的来源的信息。

异常详细信息:System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException:服务器无法 处理请求。 ---> EPiServer.Core.EPiServerException:用户执行 没有访问Web的“Permission.WebServiceAccess”访问权限 远程站点上的服务,供用户使用 EPiServer.WebServices.DataFactoryService.ValidateWebServiceAccess()
在 EPiServer.WebServices.DataFactoryService.GetDefaultPageData(PageReference

pageLink, Int32 pageTypeID) --- 内部异常堆栈跟踪结束

源错误:在执行期间生成了未处理的异常 执行当前的网络请求。有关原产地的信息 并且可以使用异常来识别异常的位置 下面的堆栈跟踪。

堆栈跟踪:

[SoapException:System.Web.Services.Protocols.SoapException:服务器 无法处理请求。 ---> EPiServer.Core.EPiServerException: 用户没有“Permission.WebServiceAccess”访问权限 访问远程站点上的 Web 服务,用户位于 EPiServer.WebServices.DataFactoryService.ValidateWebServiceAccess()
在 EPiServer.WebServices.DataFactoryService.GetDefaultPageData(PageReference pageLink, Int32 pageTypeID) --- 内部异常堆栈跟踪结束 ---] System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage 消息、WebResponse 响应、流响应Stream、布尔值 异步调用)+431766
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(字符串 方法名称,对象[]参数)+204
RemotePublishForLedigeStillinger.DataFactoryService.DataFactoryService.GetDefaultPageData(PageReference pageLink,Int32 pageTypeID)中 C:\Programmering\RemotePublishTest\RemotePublishTest\Web 参考文献\DataFactoryService\Reference.cs:148
RemotePublishForLedigeStillinger.Program.PublishPageToRemoteService(PageData 页LedigeStillinger原创)中 C:\ Programmering \ RemotePublishTest \ RemotePublishTest \ Program.cs:143
EPiServer.Templates.RelatePlus.Pages.JobAd.RemotePublishPage(PageData 页到发布)中 C:\Repo\Projects\dikt.intranet\www\Templates\RelatePlus\Pages\JobAd.aspx.cs:125 EPiServer.Templates.RelatePlus.Pages.JobAd.Godkjent_OnClick(对象 发送者、EventArgs e) 中 C:\ Repo \ Projects \ dikt.intranet \ www \ Templates \ RelatePlus \ Pages \ JobAd.aspx.cs:110 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串 事件参数)+110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String 事件参数)+10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler) 源控件,字符串事件参数)+13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint) +1565

runtime-error http-status-code-401
1个回答
0
投票

乍一看,在我看来,托管服务的应用程序池的匿名用户和/或身份没有枚举组 dr-2 pi.admin 的权限,该组在“角色...”中指定。配置文件的“允许”块...或者调用用户身份不属于这些角色,并且应用默认拒绝规则。

© www.soinside.com 2019 - 2024. All rights reserved.