gpt4 book ai didi

asp.net-mvc - 在 asp.net MVC 中调用经过身份验证的 Web 服务

转载 作者:行者123 更新时间:2023-12-04 02:51:06 26 4
gpt4 key购买 nike

我的问题是在 ASP.NET MVC 中调用经过身份验证(具有用户名和密码)的 Web 服务 (asmx)

我做了以下事情:

  1. 我通过添加服务引用将 Web 服务添加到项目中解决方案
  2. 尝试使用 wsdl.exe 工具创建服务的代理类使用以下命令语法

    wsdl/username:********/password:***************/domain:************ 网络服务 url .asmx?wsdl

但它给了我以下错误:

下载 web 服务 url://???.asmx?wsdl 时出错。请求失败,HTTP 状态 401:未经授权

我可以通过提供用户名和密码在浏览器中查看服务。

当我搜索使用 svcutil.exe 创建代理类时,我发现它不能用于经过身份验证的 Web 服务。

我想问一下是否有另一种方法来创建代理类,或者我们是否可以在没有代理类的情况下在 asp.net mvc 应用程序中调用经过身份验证的 Web 服务。

最佳答案

我有一个具有相同行为的项目,一个 Web 服务 (asmx) 在 VPN 后面,他们使用用户名/密码访问它,但在 VPN 内部没问题。

直接从 Visual Studio 生成代理类会很困难(可能缺乏对此类场景的支持),但只要您能在浏览器(wsdl 部分)。

这样做:

  1. 打开 ?wsdl在浏览器中链接,转到 Source Code模式并将整个代码复制到本地计算机中的文件中,让我们假设 c:\temp并调用service.wsdl
  2. 复制svcutil.exec:\temp (它位于 .NET Framework 文件夹中,just search for it)
  3. c:\temp 中打开一个终端(Shift + 右键单击 并选择在此处打开命令窗口)
  4. 运行以下命令:svcutil service.wsdl /out:proxy.cs /config:proxy.config

这将生成 2 个文件,proxy.csproxy.config

  • proxy.cs是您的 Web 服务包装器,您只需添加到您的项目中
  • proxy.config<system.serviceModel>你需要附加到你的 web.config文件。

现在,您需要做的就是按照生成的包装器编写如下内容:

// Web Service initialization and authentication
client = new MyNamespace.ServiceSoapClient();
client.ClientCredentials.UserName.UserName = cUser;
client.ClientCredentials.UserName.Password = cPass;

// do something
client.InsertCompetitor(model);

// close connection
if (client != null && client.State == System.ServiceModel.CommunicationState.Opened)
client.Close();

关于asp.net-mvc - 在 asp.net MVC 中调用经过身份验证的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17639549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com