请求失败,HTTP状态为401:未授权

时间:2010-07-19 16:05:17

标签: web-services http-status-code-401 .net-3.5

我有一个运行在IIS6(XP专业版SP2)中的.NET 2.0网站(VB)和一个托管ASMX Web服务的.NET 3.5(在IIS的ASP.NET选项卡下配置为.NET2)。

在Chrome中,我可以调用ASMX并成功调用Web方法。但是,在调用代码中的Web方法时,我从.NET 2.0网站获得:

  

请求失败,HTTP状态为401:未经授权。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:20)

初始化webService对象时,需要在应用程序中设置凭据。

webService.UseDefaultCredentials = true

这样的东西

这会将请求的凭据设置为执行应用程序的当前用户。

答案 1 :(得分:3)

在IIS 7中,启用匿名身份验证,您应该能够进行调试。

答案 2 :(得分:3)

webService.UseDefaultCredentials = true

这对我有用。

答案 3 :(得分:2)

您可以使用此功能:

    clear all; close all; clc

n=1;
n_inner_drone=3;
n_outter_drone=2;

length=100;

initial_d = zeros(1,n);
inner_x = zeros(n_inner_drone,n);
inner_y = zeros(n_inner_drone,n);
inner_z = zeros(n_inner_drone,n);
outter_x = zeros(n_outter_drone,n);
outter_y = zeros(n_outter_drone,n);
outter_z = zeros(n_outter_drone,n);

radius= length;

disp('test');

%%%%%%%%%%%%%%%%%%%%%% Sphere
% figure()
% [x, y, z] = sphere;
% h = surfl(x*length, y*length, z*length);
% hSurf = surf(X,Y,Z,'EdgeColor','none','LineStyle','none','FaceLighting','phong');
% set(h, 'FaceAlpha', 0.05)
% surf(x*length, y*length, z*length, 
% shading interp
hold on
%%%%%%%%%%%%%%%%%%%%%%%%%

for i=1:n_inner_drone 
    k=1;
    while 1

        x_temp= randi([-length, length], 1, 1);
        y_temp= randi([-length, length], 1, 1);
        z_temp= randi([-length, length], 1, 1);

        dist = sqrt(x_temp^2 + y_temp^2 + z_temp^2);

        if dist<radius
            if i==1
                initial_d(k) = dist;
            end
            inner_x(i,k) = x_temp;
            inner_y(i,k) = y_temp;
            inner_z(i,k) = z_temp;
            k = k+1;
        end

    if k == n+1, break, end
    end
end

ideal_direction_length = ones(1,n);
ideal_direction_length = ideal_direction_length * length;
ideal_direction_length = ideal_direction_length - initial_d;

k=1;

random_x = inner_x(1,:);
random_y = inner_y(1,:);
random_z = inner_z(1,:);

random_moving_distance = zeros(1,n);
moving_distance = 0; 
trigger = 0;
while 1

    if trigger == 0
        direction = randi([1, 6], 1, 1); 
        trigger = 1; 
    end 

    if direction == 1
        random_x(k) = random_x(k) + 1;

    elseif direction == 2
        random_x(k) = random_x(k) - 1;

    elseif direction == 3
        random_y(k) = random_y(k) + 1;

    elseif direction == 4
        random_y(k) = random_y(k) - 1;

    elseif direction == 5
        random_z(k) = random_z(k) + 1;

    elseif direction == 6
        random_z(k) = random_z(k) - 1;
    end

    dist = sqrt(random_x(k)^2 + random_y(k)^2 + random_z(k)^2);
    moving_distance = moving_distance+1;

     %%%%%%%%%% Line
     plot3(random_x(n),random_y(n),random_z(n),'k+')
     %%%%%%%%%%%%%%%

    if dist>radius
        random_moving_distance(k) = moving_distance;
        k = k+1;
        moving_distance = 0;
        trigger = 0;    
    end

    if k == n+1, break, end
end 

plot3(inner_x(1,n),inner_y(1,n),inner_z(1,n),'r*')
for k=2:n_inner_drone
    plot3(inner_x(k,n),inner_y(k,n),inner_z(k,n),'b*')
end
for k=1:n_outter_drone
    plot3(outter_x(k,n),outter_y(k,n),outter_z(k,n),'k*')
end

如果不起作用,请使用以下代码代替上面的代码

webservice.UseDefaultCredentials = true;

注意:用户名密码和域是访问webservice的用户的用户凭据

因此请确保用户有权访问网络服务

也许用户是Windows用户

您可以从以下位置获取域名:右键单击“MyComputer”和属性 域是计算机名称或工作组

答案 4 :(得分:0)

我是这样测试的:

CheckListService.CheckList chkSrvice = new CheckListService.CheckList() {
    UseDefaultCredentials = true };
相关问题