小编Wim*_*ets的帖子

如何使用 C# 从 XML Web 服务获取值?

在 C# 中,如果我需要打开 HTTP 连接、下载 XML 并从结果中获取一个值,我该怎么做?

为了保持一致性,假设 Web 服务位于 www.webservice.com,并且如果您向它传递 POST 参数 fXML=1,它会返回给您

<xml><somekey>somevalue</somekey></xml>
Run Code Online (Sandbox Code Playgroud)

我希望它能吐出“somevalue”。

c# xml web-services

5
推荐指数
1
解决办法
4351
查看次数

将动态控件插入控件集合的中间

这是我的第一篇文章!我非常绝望,所以我超越了标准的谷歌搜索.我相信这是一个高级或专家级的.NET问题.

问题是我构建了一个.NET Web应用程序,它需要能够动态地将用户控件插入到列表中间.我对动态控件非常熟悉这么长时间他们只需要添加到列表的末尾(即:我熟悉这样的文章:http://msdn.microsoft.com/en-us/library/ ms972976.aspx).但是,如果我需要将一个UserControl添加到Controls集合的前面或中间的某个地方,那么由于控件的UniqueID被抛弃,我几乎丢失了.

作为一个简化的例子,假设我有一个Panel,我正在添加一个名为MyControl.ascx的UserControl列表.我还有一些事件可以在页面上触发,需要动态地将MyControl.ascx插入到面板的Controls集合的指定索引中.我还需要在MyControl.ascx上有一个或多个事件我需要订阅.这意味着需要在这些控件上的事件触发之前加载控件,否则它们将不会触发.如果你不知道我所指的是什么,那么我要么说问题不好,要么这个问题可能对你来说太难了:)

下面是一些C#伪代码来演示这个问题.问题是Controls.AddAt(索引,控制)方法不会相应地调整控件的UniqueID值.例如,请考虑Controls集合中的以下控件:

无论我是否实际编写直接依赖于UniqueID的代码,.NET间接使用UniqueID将在先前回发上触发的事件链接在一起,并在新的回发上加载控件.以前面的例子为例:

在最初 Page Load (Page.IsPostback == false)

<table>
  <tr>
    <td width='100'>Control index</td>
    <td width='75'>UniqueID</td>
    <td>Value</td>
  </tr>
  <tr>
    <td>0</td>
    <td>ctl00</td>
    <td>value1</td>
  </tr>
  <tr>
    <td>1</td>
    <td>ctl01</td>
    <td>value2</td>
  </tr>
  <tr>
    <td>2</td>
    <td>ctl02</td>
    <td>value3</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

Page.IsPostback == false某个其他控件想要在索引0处插入控件的回发()之后:

如果我这样做,Controls.AddAt(0, newControl)那么Controls集合看起来像这样:

<table>
  <tr>
    <td width='100'>Control index</td>
    <td width='75'>UniqueID</td>
    <td>Value</td>
  </tr>
  <tr>
    <td>0</td>
    <td>ctl03</td>
    <td>value0  <== the controls' unique IDs do not shift!</td>
  </tr>
  <tr>
    <td>1</td>
    <td>ctl00</td>
    <td>value1</td>
  </tr>
  <tr>
    <td>2</td> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net user-controls dynamic-controls

5
推荐指数
1
解决办法
7716
查看次数

AuthorizeAttribute保持重定向到/ Account/Login

我试图在ASP.NET MVC中围绕Forms身份验证.MVC 5在我的具体情况下,如果重要的话.

我的应用程序不使用密码,只使​​用电子邮件地址作为用户名.

调试Login方法时,我可以清楚地看到模型有效,我的(自定义)MembershipProvider按预期验证用户.
然后它重定向到提供的returnUrl(为了测试的目的,我有一个AuthorizeAttributeon/Home/About).

可悲的是,我立刻被抛回到Login视野中,所以很明显我错过了整个过程的基本要素(并且,通过扩展,对整个身份验证/身份验证过程的基本洞察,我必须承认,因为我很少使用它).

Login方法:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    if(ModelState.IsValid && Membership.ValidateUser(model.Email, ""))
    {
        FormsAuthentication.SetAuthCookie(model.Email, model.RememberMe);

        if (Url.IsLocalUrl(returnUrl))
        {
            return RedirectToLocal(returnUrl);
        }
        else
        {
            return RedirectToAction("Index", "Home");
        }
    }
    else
    {
        ModelState.AddModelError("", "Email address unknown");
    }

    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

LoginViewModel:

public class LoginViewModel
{
    [Required]
    [Display(Name = "Email")]
    [EmailAddress]
    public string Email { get; set; }

    [Display(Name = "Remember me?")] …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc forms-authentication authorize-attribute

5
推荐指数
1
解决办法
1785
查看次数

使离子载玻片垂直滑动

我有一个start.html具有 options 属性的文件,我将在类 StartPage 的 options1 中定义它们

<ion-slide [options]="option1" *ngFor="let slide of slides; let last = last">
  <img [src]="slide.image" class="slide-image"/>
  <h2 class="slide-title" [innerHTML]="slide.title" style=""></h2>
  <p [innerHTML]="slide.description"></p>

  <div id="skip-b">
    <button (click)="dismiss()">
      {{last ? "Let's Begin" : "Skip" }}
      <ion-icon name="arrow-forward"></ion-icon>
    </button>
  </div>
</ion-slide>
Run Code Online (Sandbox Code Playgroud)

开始.ts:

export class StartPage {
    option1 = {
        loop: true,
        direction: 'vertical'
    };
}
Run Code Online (Sandbox Code Playgroud)

javascript ionic-framework ionic2

5
推荐指数
1
解决办法
3855
查看次数

让用户在客户端上打开一个xml文件并使用javascript解析它

我试图让我的网站上的用户将XML文件保存到本地计算机,然后再使用HTML文件元素加载它们.

保存文件使用iFrame完成的操作.

当试图让用户加载文件时,我一直都会遇到异常.我已经尝试过我能在网上找到的所有东西,似乎无法找到方法.

我得到了各种异常,比如跨域或XMLHttpRequest无法加载file:/// C:/fakepath/Regions.xml.仅支持HTTP的跨源请求. 根据我尝试的代码.

我读到HTML5标准用"fakepath"替换url,并且找不到解决方案.有没有办法让用户从他自己的计算机加载文件进行编辑?从服务器加载一个特定的文件不是问题,但我想给用户这个自由,而不是决定加载什么文件,还让他们在他们的计算机而不是服务器上保存和加载xml

有这个问题的解决方案吗?

发现这些代码但没有帮助(我已经尝试了很少的其他验证):

1)

 var error = "";
                strFile = document.frmLoadFile.selectedFile.value;
                intPos = strFile.lastIndexOf("\\");
                strDirectory = strFile.substring(0, intPos);
                //alert(strDirectory);
                document.frmLoadFile.selectedFile.value = strDirectory;

                var file = 'file:\\\\\\' + document.frmLoadFile.selectedFile.value;
                try //Internet Explorer
                {
                    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                    xmlDoc.async = false;
                    xmlDoc.load(file);
                }
                catch (e) {
                    try //Firefox, Mozilla, Opera, etc.
                    {
                        xmlDoc = document.implementation.createDocument("", "", null);
                        xmlDoc.async = false;
                        xmlDoc.load(file);
                    }
                    catch (e) {
                        try //Google Chrome
                        {
                            var xmlhttp = new window.XMLHttpRequest(); …
Run Code Online (Sandbox Code Playgroud)

javascript xml html5 client-side

3
推荐指数
1
解决办法
5175
查看次数

必须在调用 send 方法之前设置 Web 服务错误路径属性

必须在调用 send 方法之前设置 path 属性

这个错误的原因是什么?

谢谢

asp.net web-services webservice-client web

3
推荐指数
1
解决办法
5354
查看次数

从DataTable中删除空行的方法?

我通过Excel电子表格解析并将整个结果作为DataTable返回.但是,此Excel电子表格有几个空行,我想从结果DataTable中消除这些行.特别是,每个空行以空单元格开头.所以,我知道如果第一个索引处的单元格的值为空,则整行是空的.请注意,我不能简单地修改Excel电子表格,因为我必须正好处理客户端发送给我的内容.根据这些信息,我假设我可以执行以下功能来删除空行:

' DataTable dt has already been populated with the data

For Each row As DataRow In dt.Rows
    If dt.Rows.Item(0).ToString = "" Then
        dt.Rows.Remove(row)
    ElseIf dt.Rows.Item(0) Is Nothing Then
        dt.Rows.Remove(row)
    End If
Next
Run Code Online (Sandbox Code Playgroud)

但是,在制定此解决方案后,我遇到以下错误:

Collection was modified; enumeration operation might not execute.
Run Code Online (Sandbox Code Playgroud)

我现在意识到,当我访问它时,我无法改变它的集合.我怎么能绕过这个?我想知道是否应该创建一个非空行的新DataTable.这是最好的方法还是有更好的选择?

编辑:我也尝试向后迭代行:

For i = dt.Rows.Count() - 1 To 0
    If dt.Rows.Item(i).Item(0).ToString = "" Then
        dt.Rows.RemoveAt(i)
    End If
Next
Run Code Online (Sandbox Code Playgroud)

vb.net asp.net datatable

2
推荐指数
1
解决办法
8668
查看次数

使用初始化程序通过枚举循环会产生意外结果

我创建的枚举看起来像这样:

enum MonthOfTheYear : byte
{
    January,
    February,
    March,
    April,
    May,
    June,
    July = 0,
    August,
    September,
    October,
    November,
    December
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,7月初始值为0.这有一些有趣的(侧面)效果:似乎是整数值的"配对".2月和8月现在的值为1,3月和9月有2等:

MonthOfTheYear theMonth = MonthOfTheYear.February;
Console.WriteLine(theMonth + " has integer value of " + (int)theMonth);
Run Code Online (Sandbox Code Playgroud)

MonthOfTheYear theMonth = MonthOfTheYear.August;
Console.WriteLine(theMonth + " has integer value of " + (int)theMonth);
Run Code Online (Sandbox Code Playgroud)

清楚地表明这一点 到目前为止,我觉得很奇怪,我愿意继续. 编辑:我得到指定7月0日使指数重新开始.我不明白为什么他们可以在同一个枚举中共存.

但!如果我然后遍历枚举并输出所有基础整数值,则会出现奇怪现象.

MonthOfTheYear theMonth = MonthOfTheYear.January;

for (int i = 0; i < 12; i++)
{
    Console.WriteLine(theMonth + " has integer value of " + (int)theMonth++); …
Run Code Online (Sandbox Code Playgroud)

c# enums literals

2
推荐指数
1
解决办法
119
查看次数

WPF单选按钮绑定

我有一个主从WPF应用程序。“ master”是一个数据网格,“ detail”是两个单选按钮。基于行选择,将在“详细信息”部分中选中单选按钮。

我使用inttoboolean转换器按以下方式绑定单选按钮。xaml:

<StackPanel Margin="2">
  <RadioButton Margin="0,0,0,5" Content="In Detail" IsChecked="{Binding Path=itemselect.OutputType, Converter ={StaticResource radtointOTSB}, ConverterParameter= 0}"/>
  <RadioButton Content="In Breif" IsChecked="{Binding Path=itemselect.OutputType, Converter ={StaticResource radtointOTSB}, ConverterParameter= 1}"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

在视图模型中:

public class radtointOTSB : IValueConverter
{
    object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int OTint = Convert.ToInt32(value);
        if (OTint == int.Parse(parameter.ToString()))
            return true;
        else
            return false;
    }

    object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return parameter;
    }
}
Run Code Online (Sandbox Code Playgroud)

对于datagrid中的前几个选择,我的实现效果很好。突然之间,我的单选按钮都没有被选中。

我不知道为什么会这样,欢迎提出任何建议。

提前致谢。

wpf master-detail radio-button

1
推荐指数
1
解决办法
3689
查看次数

itextsharp 和图像旋转

我有一个图像,我正在将其插入到使用 iTextSharp 和 asp.net 创建的 pdf 文件中。我添加的图像是一个条形码,我需要旋转它,以便它在页面上是纵向而不是横向。有没有办法用 iTextSharp 来做到这一点?

pdf asp.net itext

1
推荐指数
1
解决办法
6503
查看次数

Asp.Net Core和JWT身份验证:如何知道身份验证因令牌过期而失败?

以下是我正在使用的JWT身份验证:

.AddJwtBearer(options =>
{
    // options.SaveToken = false;
    // options.RequireHttpsMetadata = false;

    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuerSigningKey = true,
        IssuerSigningKey = new SymmetricSecurityKey(AuthConfig.GetSecretKey(Configuration)),

        ValidateIssuer = false,
        ValidateAudience = false,

        ValidateLifetime = true,
        ClockSkew = TimeSpan.Zero,
    };

    options.Events = new JwtBearerEvents()
    {
        OnChallenge = c =>
        {
            c.HandleResponse();

            // TODO: How to know if the token was expired?

            return AspNetUtils.WriteJsonAsync(c.Response, new Result<string> 
            { 
                Message = "Unauthenticated.", 
                IsError = true 
            }, 401);
        },
    };
});
Run Code Online (Sandbox Code Playgroud)

身份验证正常。对于新要求,我需要知道是否由于JWT令牌过期而导致身份验证失败。

请注意,身份验证失败可能有多种原因。令牌可能丢失,被篡改或过期。

有任何想法吗?谢谢!

jwt asp.net-core jwt-auth asp.net-core-2.1

1
推荐指数
1
解决办法
321
查看次数