7

Я передаю свойство Folder.Id.UniqueId папки, полученной из запроса FindFolders, с помощью строки запроса на другую страницу. На этой второй странице я хочу использовать что UniqueId для привязки к папке в список своих почтовых отправлений:Folder.Bind - «Идентификатор неверен» - управляемый API управляемых веб-службами

string parentFolderId = Request.QueryString["id"]; 
... 
Folder parentFolder = Folder.Bind(exchangeService, parentFolderId); 
// do something with parent folder 

Когда я запускаю этот код он генерирует исключение, говоря мне Ид имеет неверный формат. Я, возможно, думали, что это должно быть завернуты в FolderId объекта:

Folder parentFolder = Folder.Bind(exchangeService, new FolderId(parentFolderId)); 

же вопрос.

Я искал какое-то время и нашел некоторые предложения относительно преобразования Base64/UTF8, но опять же это не решило проблему.

Кто-нибудь знает, как привязываться к папке с заданным уникальным идентификатором?

ответ

0

Правильно ли сформировано значение parentFolderId, или это просто бросает шаткое при попытке создать экземпляр объекта папки? Вы делаете HttpUtility.UrlEncode в id перед тем, как передать его в виде строки запроса (не забудьте сделать HttpUtility.UrlDecode после этого)

0

Вам необходимо убедиться, что идентификатор правильно закодирован. Вот пример.

Модель:

public class FolderViewModel 
{ 
    public string Id { get; set; } 
} 

Контроллер:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     ExchangeService service = new ExchangeService(); 
     service.Credentials = new NetworkCredential("username", "pwd", "domain"); 
     service.AutodiscoverUrl("[email protected]"); 

     // Get all folders in the Inbox 
     IEnumerable<FolderViewModel> model = service 
      .FindFolders(WellKnownFolderName.Inbox, new FolderView(int.MaxValue)) 
      .Select(folder => new FolderViewModel { Id = folder.Id.UniqueId }); 

     return View(model); 
    } 

    public ActionResult Bind(string id) 
    { 
     Folder folder = Folder.Bind(service, new FolderId(id)); 
     // TODO: Do something with the selected folder 

     return View(); 
    } 
} 

И Индексный:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<SomeNs.Models.FolderViewModel>>" %> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

<% foreach (var folder in Model) { %> 
    <%: Html.ActionLink(Model.Id, "Bind", new { id = Model.Id }) %> 
<% } %> 

</asp:Content> 
7

У меня была аналогичная проблема, и используется UrlEncode/urldecode, чтобы убедиться, иды был правильно отформатирован. Однако у одного из пользователей были сообщения, которые могут привести к ошибкам.

Оказалось, что некоторые из идентификаторов имели знак «+», в результате чего при расшифровке пробел пробел. Простая замена '' '+' сделала трюк.

Может быть проблема.

Я знаю, что вопрос был задан давно, но это может быть полезно другим в будущем.

 Смежные вопросы

  • Нет связанных вопросов^_^