我们运行一个链接重定向服务,它可以处理以各种格式抛出的链接.例如,这些格式之一是将目标URL附加到链接的末尾
HTTP://url.fwd/abcd/http://www.mydomain.com/page.aspx
这是在过去两年中在Windows Server 2003/IIS6上运行的,但现在我们正在尝试迁移到Windows Server 2008/IIS7设置,它不再起作用了.
我已经读过URL中冒号的问题,但它不会影响不以'.aspx'结尾的页面.例如,
HTTP://url.fwd/abcd/http://www.mydomain.com/page.php
会重定向好.
HTTP://url.fwd/abcd/http//www.mydomain.com/page.aspx
也工作正常(注意缺少第二个冒号).尽管URL错误,但它确实由我们的URL转发系统处理,该系统使用自定义404页面.在旧系统上,我们遇到了类似的问题,因此在Global.asax> Application_Error中专门编写了一个方法来处理'.aspx'的情况,并且它工作正常.
在我们的新服务器上,Application_Error永远不会被Global.asax抛出.相反,我得到一个System.NotSupportedException - "不支持给定路径的格式".这个System.NotSupportedException是我们在Global.asax页面中处理的确切情况,因此它绝对不会被触发.
我已经更改了几个论坛帖子中指示的注册表项,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET VerificationCompatibility = 1 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP |参数AllowRestrictedChars = 1
我已经尝试更改.aspx的Handler Mappings设置.
我已经尝试将应用程序池设置为使用经典模式而不是集成,但这会导致完全不同的错误,其中静态内容(如图像和CSS)根本不显示.我已经检查过在Windows功能中启用了静态内容,它确实如此.在经典模式下,'.aspx'请求会抛出两个错误请求错误,绝对没有任何信息.我得到的错误页面的代码是字面上的
错误请求<html> <body>错误请求</ body> </ html>
更新:我已将静态文件处理程序映射更改为此页面中的表单 http://improve.dk/blog/2006/12/11/making-url-rewriting-on-iis7-work-like-iis6 但是正如作者正确指出的那样,这是一种黑客行为,而不是在IIS7下做事的正确方法.它还只修复了经典模式下的静态文件问题.'.aspx'页面仍然在经典模式下抛出错误.
在这一点上,任何想法或意见都会受到高度赞赏.
我正在尝试在SalesForce平台上编写一个应用程序,它可以从报告中提取联系人列表并将其发送到Web服务(比如向他们发送电子邮件或短信)
我似乎找到这样做的唯一方法是将报告结果添加到新创建的广告系列,然后访问该广告系列.这似乎还有很长的路要走.
我在网上看到的每篇帖子都说你无法通过Apex访问报告,但大多数或所有这些帖子都是在上个月发布的API第20版之前编写的,它引入了一个新的报告对象.我现在可以以编程方式访问有关报告的信息(例如上次运行的日期等)但我仍然无法找到访问该报告中包含的结果数据的方法.
有谁知道有没有办法做到这一点?
试图使用这个问题的解决方案给我一个奇怪的问题.(为方便起见,这里复制)
这是ListView吞噬右键单击事件并阻止AppBar打开的问题的解决方案- 一个继承ListView并覆盖以下OnRightTapped事件的类ListViewItem:
public class MyListView : ListView
{
protected override DependencyObject GetContainerForItemOverride()
{
return new MyListViewItem();
}
}
public class MyListViewItem : ListViewItem
{
protected override void OnRightTapped(Windows.UI.Xaml.Input.RightTappedRoutedEventArgs e)
{
base.OnRightTapped(e);
e.Handled = false; // Stop 'swallowing' the event
}
}
<CustomControls:MyListView
x:Name="ItemsList"
...
SelectionMode="Single"
RightTapped="MyListView_RightTapped">
</CustomControls:MyListView>
Run Code Online (Sandbox Code Playgroud)
我已经在一个名为CustomControls的新命名空间中实现了一个指定的自定义控件,完全如上所述.我已将该命名空间添加到MainPage.xaml
xmlns:CustomControls="using:CustomControls"
Run Code Online (Sandbox Code Playgroud)
当我尝试在后面的代码中引用'ItemsList'时,我得到一个编译错误
The name 'ItemsList' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)
我已经尝试构建,重建,清理解决方案,关闭并重新打开解决方案,将类放在主项目名称空间下,都无济于事.
总而言之,MainPage.cs无法在MainPage.xaml上看到自定义控件
更新2:重新提出问题以消除无关的问题.我也改变了标题以反映真正的问题.
我试图验证我拥有的模型上的属性。此属性不是必需的,因此如果其无效的 MVC 似乎会忽略它。我什至创建了一个自定义 ValidationAttribute,但没有任何作用。
public class NumberWang : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null)
return true;
int g;
if (int.TryParse(value.ToString(), out g))
{
if (g >= 0)
return true;
}
return false;
}
}
public class MyModel
{
[Range(0, 999999, ErrorMessage = "category_id must be a valid number")]
[NumberWang(ErrorMessage = "That's NumberWang!")]
public int? category_id { get; set; }
/* there are other properties of course, but I've omitted them for simplicity */
public …Run Code Online (Sandbox Code Playgroud) 我在ASP.Net MVC 3项目中设置了FluentValidation.我有一个有两个输入的表格.两者都可以是空白,但不能同时为空.
这就是我所拥有的:
RuleFor(x => x.username)
.NotEmpty()
.When(x => string.IsNullOrEmpty(x.email) == true)
.WithMessage("Please enter either a username or email address")
Run Code Online (Sandbox Code Playgroud)
这正确地将错误直接放在我的用户名字段上方.但是,当两个字段都留空时,我更喜欢验证摘要来显示消息
有没有办法做到这一点?我一直在想我可以在模型中创建一个未使用的字段并将错误放在那里(如果其他两个是空白的话),
RuleFor(x => x.unused_field)
.NotEmpty()
.When(x => string.IsNullOrEmpty(x.email) == true && string.IsNullOrEmpty(x.username) == true)
.WithMessage("Please enter either a username or email address")
Run Code Online (Sandbox Code Playgroud)
但这感觉就像是一种尴尬的方式.有没有办法可以在验证摘要中添加消息?
我最近从Windows 8/VS2013迁移到Windows 10/VS2015.在这样做后,我再也无法构建Windows 8商店应用程序 - 如果我想构建项目,我将被迫升级到Windows 8.1.
但是,我维护了我的应用程序的两个版本 - 一个用于Windows 8,另一个用于8.1.我有一些客户拒绝更新到8.1(不,我不知道为什么),我不想让他们留下过时的版本.我已经将项目升级到8.1并将其保持独立.
有没有办法在没有强制升级的情况下在Visual Studio 2015中构建Windows 8.0应用程序?
windows-8 windows-store windows-store-apps windows-8.1 visual-studio-2015
假设我有一个 json 对象,其中记录了我的网站的访问者数量,按浏览器/版本分组。
let data = {
browsers: {
chrome: {
43 : 13,
44 : 11
},
firefox: {
27: 9
}
}
}
Run Code Online (Sandbox Code Playgroud)
要增加特定的浏览器,我需要检查是否存在多个键,如果不存在,则创建它们。
let uap = UAParser(request.headers['user-agent']);
if (typeof uap.browser !== 'undefined') {
if (typeof data.browsers === 'undefined')
data.browsers = {}
if (typeof data.browsers[uap.browser.name] === 'undefined')
data.browsers[uap.browser.name] = {}
if (typeof data.browsers[uap.browser.name][uap.browser.version] === 'undefined')
data.browsers[uap.browser.name][uap.browser.version] = 0
data.browsers[uap.browser.name][uap.browser.version] += 1;
}
Run Code Online (Sandbox Code Playgroud)
我的数据结构越深,事情就会变得越疯狂。
感觉必须有一种更简洁的方法在 javascript 中做到这一点。总有一种更简洁的方法。有人可以在这里启发我吗?
我真的需要能够弄清楚给定的HTML内部有多高WebView.这对我正在尝试构建的项目至关重要.我知道这不可能立即实现,但我可以确定WebView上是否存在滚动条我可能会增加视图的高度,直到它消失.
有什么想法吗?或任何替代解决方案/建议?我研究了使用HTMLAgilityPack(现在移植到Metro)将其转换为TextBlock,但HTML太复杂了.
我知道如何post在ASP.NET中的表单的对象列表,但假设我想要同时post一些其他值?
有没有办法有一个表格,像这样
<form method="POST" action="test">
<input type="text" name="name" value="Roryok" />
<input type="text" name="email" value="idontgiveoutmyemail@overtheinter.net" />
<input type="text" name="[0].hobby" value="dibbling" />
<input type="text" name="[0].level" value="amateur" />
<input type="text" name="[0].hobby" value="fargling" />
<input type="text" name="[0].level" value="intermediate" />
<input type="text" name="[2].hobby" value="garbling" />
<input type="text" name="[2].level" value="expert" />
</form>
Run Code Online (Sandbox Code Playgroud)
发布到看起来像这样的方法?
[HttpPost]
public ActionResult test(MyViewModel model){
/// do some stuff with the model here
return View();
}
public class MyViewModel{
public string name { get; set; }
public string email …Run Code Online (Sandbox Code Playgroud) 我刚刚遇到一个独特的错误,一个实时网站在登录时抛出"索引超出了数组的范围".我将错误跟踪到从旧项目继承的旧"计时"文件.这是完整的课程
public class TimingObject
{
public DateTime timestamp { get; set; }
public String call { get; set; }
public TimeSpan duration { get; set; }
// create a new timing object starting now
public TimingObject()
{
timestamp = DateTime.Now;
}
public TimingObject(String call)
{
timestamp = DateTime.Now;
this.call = call;
}
public void Stop()
{
List<TimingObject> timings;
if (HttpContextManager.Current.Cache["PageTimings"] == null)
timings = new List<TimingObject>();
else
timings = HttpContextManager.Current.Cache["PageTimings"] as List<TimingObject>;
this.duration = (DateTime.Now - this.timestamp);
timings.Add(this);
HttpContextManager.Current.Cache["PageTimings"] = …Run Code Online (Sandbox Code Playgroud) c# ×5
windows-8 ×3
asp.net ×2
xaml ×2
apex-code ×1
arrays ×1
global-asax ×1
iis-7 ×1
javascript ×1
list ×1
node.js ×1
object ×1
post ×1
salesforce ×1
validation ×1
viewmodel ×1
webview ×1
windows-8.1 ×1
winrt-xaml ×1