【问题标题】:VB.Net Web Method giving a HTTP401 Not Authorised errorVB.Net Web 方法给出 HTTP401 Not Authorized 错误
【发布时间】:2012-05-10 11:00:31
【问题描述】:

我在我正在工作的 Intranet 站点的几个地方使用 Web 方法,它们工作正常,但是每次我尝试访问 Web 方法时,一个页面都会不断抛出 HTTP 401 错误。

我不知道如何解决这个问题,我已经尝试用 web 方法评论所有内容,但仍然得到 401 错误,即使是基本连接到数据库,只是在执行 SELECT 1 时我看不到带有分析器的数据库。

我的 web.config 对于 Intranet 中的所有页面都是相同的,与使用 web 方法的页面相比,我看不出我的 ASP.Net 页面有任何差异。

谁能告诉我为什么这会发生在这个页面而不是其他页面?还有我该如何解决这个问题?

ASP.Net 代码(从按钮的 OnClientClick 调用)

   function SendEmails()
   {

      var Grid = document.getElementById("instructorGrid");
      var mailBody = document.getElementById("txtMailBody");
      var ddlDutyPeriod = document.getElementById("DDL_DutyPeriods");

         var cell = Grid.rows[i].cells;
         var HTML = cell[0].innerHTML;
         var chkBox = cell[5].innerHTML;

         PageMethods.TestMethod()
   }

脚本管理器

 <asp:ScriptManager ID="ScriptManager1" 
                         runat="server" 
                         EnableScriptGlobalization="true"
                         EnablePageMethods="true" 
                         EnableScriptLocalization="true">
  </asp:ScriptManager>

VB.Net 代码

  <System.Web.Services.WebMethod()>
   Public Shared Sub TestMethod()

      'Dim conn1 As New SqlConnection(ConfigurationManager.ConnectionStrings("Blueprint").ToString())

      'Dim cmd2 As New SqlCommand

      'cmd2.CommandType = CommandType.Text
      'cmd2.CommandText = "SELECT 1"


      'cmd2.Connection = conn1

      'conn1.Open()
      'cmd2.ExecuteNonQuery()
      'conn1.Close()

   End Sub

提琴手结果

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Not Authorized</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Not Authorized</h2>
<hr><p>HTTP Error 401. The requested resource requires user authentication.</p>
</BODY></HTML>

更新:

我曾尝试在此链接http://support.microsoft.com/kb/306158 中的代码中使用模拟用户,但我不能这样做,因为该方法是一种网络方法。

我还尝试按照下面的建议在 web.config 中添加对我的登录页面的匿名访问,但这也没有帮助

【问题讨论】:

  • IIS 是否有权访问您尝试访问的文件。 (NTFS 级访问)。由于服务由 IIS 运行,您需要授予对应用程序池用户(或用户)的访问权限。尝试添加具有完全访问权限的 IIS_IUSRS 组。

标签: asp.net vb.net iis


【解决方案1】:

我认为您正在使用 FormsAuthentication。您必须为您的登录页面提供匿名访问权限。

<location path="Login.aspx">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>

【讨论】:

  • 这只会影响这一页吗,我在同一网站的其他页面上使用网络方法,它们工作正常。
  • 上周我也遇到了同样的事情。我没有深入研究为什么它发生在一页而不是另一页。此外,建议您为您的登录页面添加匿名访问权限。
  • 试过了,但这似乎没有帮助。该网站是 Classic 和 .Net 的混合体是否重要?我认为登录是经典的。
【解决方案2】:

在您的 web.config 文件中添加模拟标签。这应该允许在尝试访问您的网络方法时使用特定帐户进行模拟。请参阅此支持article 以获得指导。

<system.web>

<identity impersonate="true" userName="Yang" password="bar" />

</system.web>

【讨论】:

    【解决方案3】:

    这是一个很长的镜头,但你的 Web.Config 中有这个吗?

    <system.web.extensions>
      <scripting>
        <webServices>
          <authenticationService enabled="true" />
        </webServices>
      </scripting>
    </system.web.extensions>
    

    【讨论】:

    • 我之前遇到过这个问题并添加它解决了它 - 我设法找到了一个解释它的链接,但现在找不到它(如果我遇到它会发布)
    猜你喜欢
    • 1970-01-01
    • 2014-11-09
    • 2022-10-17
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2018-01-25
    相关资源
    最近更新 更多