我有一个System.ArgumentNullException: Array cannot be null. Parameter name: bytes
at System.Text.ASCIIEncoding.GetBytes(String chars, Int32 charIndex, Int32
charCount, Byte[] bytes, Int32 byteIndex)
at System.Net.HttpWebRequest.GenerateRequestLine(Int32 headersSize)
at System.Net.HttpWebRequest.SerializeHeaders()
at System.Net.HttpWebRequest.EndSubmitRequest()
at System.Net.HttpWebRequest.GetResponse()
at
Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.
WebServices.Data.IEwsHttpWebRequest.GetResponse()
at
Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(
IEwsHttpWebRequest request)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(
IEwsHttpWebRequest& request)
at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.InternalExecute()
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalBindToItems(
IEnumerable`1 itemIds, PropertySet propertySet, String anchorMailbox, ServiceErrorHandling errorHandling)
at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToItem(ItemId itemId, PropertySet propertySet)
at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToItem[TItem](ItemId itemId, PropertySet propertySet)
at Microsoft.Exchange.WebServices.Data.EmailMessage.Bind(ExchangeService service, ItemId id, PropertySet propertySet)
应用程序,然后有一个表单,用户可以在其中创建用户名和密码。
用户收到以下消息错误:
ChangeCollection<ItemChange> changeCollection=null;
List<Item> syncedItems = null;
changeCollection = _exchangeService.SyncFolderItems(exchangeFolder.Id,
new PropertySet(BasePropertySet.IdOnly, ItemSchema.ItemClass), null,
_syncBatchSize,
SyncFolderItemsScope.NormalItems,
currentSyncState);
syncedItems = changeCollection.Where(d => d.ChangeType == ChangeType.Create || d.ChangeType == ChangeType.Update)
.Select(c => c.Item).ToList();
foreach (var item in syncedItems)
{
if (!item.ItemClass.Equals("IPM.SkypeTeams.Message"))
continue;
EmailMessage message = EmailMessage.Bind(_exchangeService, item.Id.UniqueId,
new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Attachments,
ItemSchema.TextBody));
//...code to store message
}
用户正在创建以下密码:
ASP.NET MVC
我猜服务器由于A potentially dangerous Request.Form value was detected from the client (Password="1e.q<Tm6").
字符而拒绝了该字符串。
这是预期的行为吗?通常在密码输入中不允许使用这些字符吗?如果允许的话,如何保证控制器安全但允许使用这些字符?
谢谢
答案 0 :(得分:0)
是的。这是预期的行为。收到错误的原因是,提交表单时,asp.met mvc框架将检查请求正文,以查看它是否具有任何潜在危险的内容(如HTML标记)( 考虑脚本注入 )。如果检测到任何危险内容,则请求验证模块将引发错误。这是设计使然
您可以将AllowHtml
属性应用于视图模型属性,以便请求验证框架在执行请求验证步骤时将忽略此特定属性。
public class LoginVM
{
public string UserName { set;get;}
[AllowHtml]
public string Password { set; get; }
}
下面的文字来自msdn官方页面,我认为这是相关的。
强烈建议您的应用程序明确检查所有 禁用请求验证以防止脚本的模型 漏洞。
答案 1 :(得分:0)
使用控制器上的属性 [ValidateInput(false)] :
[HttpPost]
[ValidateInput(false)]
[ValidateAntiForgeryToken]
public ActionResult Create(Product model)
如果它是发送到服务器的HTML类型的内容,请使用 WebUtility.HtmlEncode 方法对字符串进行编码,并使用 WebUtility.HtmlDecode 进行读取。