在 C# 中,如果我需要打开 HTTP 连接、下载 XML 并从结果中获取一个值,我该怎么做?
为了保持一致性,假设 Web 服务位于 www.webservice.com,并且如果您向它传递 POST 参数 fXML=1,它会返回给您
<xml><somekey>somevalue</somekey></xml>
Run Code Online (Sandbox Code Playgroud)
我希望它能吐出“somevalue”。
这是我的第一篇文章!我非常绝望,所以我超越了标准的谷歌搜索.我相信这是一个高级或专家级的.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) 我试图在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
我有一个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) 我试图让我的网站上的用户将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) 必须在调用 send 方法之前设置 path 属性
这个错误的原因是什么?
谢谢
我通过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) 我创建的枚举看起来像这样:
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) 我有一个主从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中的前几个选择,我的实现效果很好。突然之间,我的单选按钮都没有被选中。
我不知道为什么会这样,欢迎提出任何建议。
提前致谢。
我有一个图像,我正在将其插入到使用 iTextSharp 和 asp.net 创建的 pdf 文件中。我添加的图像是一个条形码,我需要旋转它,以便它在页面上是纵向而不是横向。有没有办法用 iTextSharp 来做到这一点?
以下是我正在使用的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令牌过期而导致身份验证失败。
请注意,身份验证失败可能有多种原因。令牌可能丢失,被篡改或过期。
有任何想法吗?谢谢!
asp.net ×5
c# ×4
javascript ×2
web-services ×2
xml ×2
asp.net-core ×1
asp.net-mvc ×1
client-side ×1
datatable ×1
enums ×1
html5 ×1
ionic2 ×1
itext ×1
jwt ×1
jwt-auth ×1
literals ×1
pdf ×1
radio-button ×1
vb.net ×1
web ×1
wpf ×1