2012-05-10 5 views
6

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

私はこの問題を解決する方法が不明ですが、Webメソッドからすべてコメントしてみましたが、基本的にはデータベースに接続するだけでも基本的に401エラーが発生しますSELECT 1 DBを見ると表示されませんプロファイラを使用します。

私のweb.configはイントラネット内のすべてのページで同じで、Webメソッドが動作するページと比較して私のASP.Netページに違いは見られません。

誰にも、なぜこのページだけでなく他のもので起こっているのか教えていただけますか?また、どのようにこの問題を回避することができますか?

(ボタンのOnClientClickから呼び出さ)ASP.Netコード

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> 

UPDATE:

私は、メソッドがWebメソッドであるため、しかし、私はそれを行うカントダウンリンクhttp://support.microsoft.com/kb/306158で半分のようなコードでユーザーを偽装使用して試してみました。下に提案されているよう

は私もweb.configファイルで私のログインページへの匿名アクセスを追加しようとしているが、これもhasntはそれはロングショットですが、あなたはあなたのWeb.Configでこれを持っているん

+0

IISには、アクセスしようとしているファイルへのアクセス権がありますか。 (NTFSレベルアクセス)。サービスがIISによって実行されるため、アプリケーションプールユーザー(またはユーザー)へのアクセスを許可する必要があります。フルアクセスでIIS_IUSRSグループを追加してみてください。 – Nicholas

答えて

1

を助けましたか?

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

いいえ、私は持っていますか? – Purplegoldfish

+0

私は以前にこの問題を抱えていましたが、それを解決しました - 私はそれを説明したリンクを見つけることができましたが、今見つけられませんでした(私がそれを見つけたら投稿します) –

+0

Thanks Kevin、ヘルプ:( – Purplegoldfish

2

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

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

これはちょうどこの1ページに影響を与えますか?私は同じウェブサイト内の他のページでウェブメソッドを使用していて、うまく動作しますか? – Purplegoldfish

+0

私は先週同じことが起こっていました。どうしてあなたのログインページに匿名アクセスを追加することが推奨され、理にかなっています。 – TheGeekYouNeed

+0

試しましたが、これは役に立たないようです。サイトがClassicと.Netが混在していることが重要ですか?ログインは古典的です。 – Purplegoldfish

2

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

<system.web> 

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

</system.web> 
関連する問題