我已经创建了一个Dynamics NAV 2016代码单元Web服务(SOAP流),我想在ASP.NET4 Web应用程序中使用它。
对于身份验证,我需要使用Windows凭据。这是一个非常简短的代码示例。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CleanWebApp
{
using GridRef; //Web Reference
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
Grid grid = new Grid(); //New instance of the Web Service
grid.UseDefaultCredentials = true; //Use the DefaultCredentials (system credentials of the application)
//Create a table rows and cells based on the return values of the Codeunit functions
int columns = grid.SendColumnsToWeb();
int rows = grid.SendRowsToWeb();
for (int i = 0; i < rows; i++)
{
TableRow tr = new TableRow();
for (int j = 0; j < columns; j++)
{
TableCell tc = new TableCell();
tc.Controls.Add(new LiteralControl(grid.SendDescToWeb(j + 1, i + 1)));
tr.Cells.Add(tc);
}
DynamicTable.Rows.Add(tr);
}
}
[...]
当我从Visual Studio运行此代码时,Web应用程序通过IIS Express启动,并且一切正常。现在我将此项目发布到硬盘并使用IIS Windows功能运行它。浏览网站时,出现http status 401 unauthorized
错误。
我的IIS管理器中启用了Windows身份验证。
在system.web块的web.config文件中,我添加了<authentication mode="Windows">
。
当我提供硬编码的凭据(用户、密码、域)并使用此代码进行身份验证时,grid.Credentials = new System.Net.NetworkCredential(user, password, domain);
一切都正常工作,只是凭据是以编程方式提供的...
有人能解决这个问题吗?
先谢了
1条答案
按热度按时间ebdffaop1#
您是否检查了Internet Explorer设置?在“安全”选项卡下,您可以调整安全区域。您应该检查一个用于用户身份验证的选项。