6

作業中のイントラネット サイトのいくつかの場所で Web メソッドを使用していますが、正常に動作しますが、Web メソッドにアクセスしようとするたびに、1 つのページで常に HTTP 401 エラーがスローされます。

この問題にアプローチする方法がわかりません。Web メソッドからすべてをコメントアウトしようとしましたが、それでも 401 エラーが発生しますSELECT 1。プロファイラーで DB を監視しても、データベースへの基本的な接続が表示されません。

私の web.config はイントラネット内のすべてのページで同じであり、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の途中のようなコードでユーザーの偽装を使用しようとしましたが、メソッドが webmethod であるため、それを行うことはできません。

以下に示すように、web.configのログインページに匿名アクセスを追加しようとしましたが、これも役に立ちませんでした

4

3 に答える 3

2

web.configファイルに偽装タグを追加します。これにより、Webメソッドにアクセスしようとするときに、特定のアカウントになりすますことができます。方向性については、このサポート記事を参照してください。

<system.web>

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

</system.web>
于 2012-05-15T08:36:34.387 に答える
2

FormsAuthentication を使用していると思います。ログイン ページに匿名アクセスを許可する必要があります。

<location path="Login.aspx">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>
于 2012-05-14T21:49:11.747 に答える
1

それはロングショットですが、Web.Config にこれがありますか?

<system.web.extensions>
  <scripting>
    <webServices>
      <authenticationService enabled="true" />
    </webServices>
  </scripting>
</system.web.extensions>
于 2012-05-10T11:13:14.953 に答える