简体   繁体   English

对ObjectDataSource ASP .NET使用Web服务凭据

[英]Using Webservice credentials for ObjectDataSource asp .net

I have a question: 我有个问题:

I have webservice which requires username and password (Basic/ Windows authentication) 我的网络服务需要用户名和密码(基本/ Windows身份验证)

I have setup a web project in Visual Studio 2010 using “Add web reference” (normal stuff…right) 我已经在Visual Studio 2010中使用“添加网络参考”(正常内容…正确)设置了一个Web项目。

Here is the ASPX code: 这是ASPX代码:

<asp:Repeater ID="repUnserName" runat="server" DataSourceID="objGetUserName">
    <ItemTemplate>
        Name: <span class="info">
            <%# Eval("myName")%></span>
    </ItemTemplate>
</asp:Repeater>
<asp:ObjectDataSource ID="objGetUserName" runat="server" SelectMethod="getUserNameByEmail"
    TypeName="SecureService" OnSelecting="objGetUserName_Selecting">
    <SelectParameters>
        <asp:Parameter DefaultValue="" Name="UserEmail" Type="String" />
    </SelectParameters>
</asp:ObjectDataSource>

c# Code: C#代码:

protected void objGetUserName_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {            
            e.InputParameters["UserEmail"] = "myemail@email.com 

    }

Now my question is how can I pass webservice login credentials when calling getUserByEmail method using ObjectDataSource ? 现在我的问题是,使用ObjectDataSource调用getUserByEmail方法时如何传递Web服务登录凭据?

Thanks for your help in advance 谢谢您的帮助

I would suggest to have a wrapper method in the page (or in some helper class) to control credential passing. 我建议在页面(或某些帮助程序类)中使用包装方法来控制凭据传递。 For example, 例如,

<asp:ObjectDataSource ID="objGetUserName" runat="server" SelectMethod="getUserNameByEmail"
    TypeName="PageClassName" OnSelecting="objGetUserName_Selecting">

internal static DataTable getUserNameByEmail(string email)
{
    var proxy = new SecureService();
    proxy.Credentials = new NetworkCredentials("user-name", "password");
    return proxy.getUserNameByEmail(email);
}

Disclaimer: untested code - just to get the idea of solution 免责声明:未经测试的代码-只是为了了解解决方案的想法

This is what I end up doing: 这就是我最终要做的事情:

Creating "Object Creating event" 创建“对象创建事件”

Sample Code: 样例代码:

protected void MyObjDS_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
MyWebService.Service webProxy = new MyWebService.Service();
webProxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
e.ObjectInstance = webProxy;
}

Source URL: http://paulsiu.wordpress.com/2008/08/31/error-401-when-using-objectdatasource-to-call-a-web-service/#comment-4023 源URL: http : //paulsiu.wordpress.com/2008/08/31/error-401-when-using-objectdatasource-to-call-a-web-service/#comment-4023

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM