Библиотека InfoPath создает исключение NotImplementedException для метода XmlFormView.XmlForm.SaveAs - PullRequest
1 голос
/ 18 мая 2011

Я использую XmlFormView на странице SharePoint для просмотра форм с поддержкой браузера InfoPath и программно добавляю логику открытия и сохранения.

Все идет хорошо, без метода XmlForm.SaveAs . Этот метод генерирует исключение NotImplementedException, если я вызываю его для экземпляра XmlForm с экземпляром и с допустимым местоположением, см. Код:

ASPX:

<InfoPath:XmlFormView ID="infoPathFormView" ShowHeader="false" Style="width: 100%;" runat="server" />

Код:

infoPathFormView.SaveLocation = "http://localhost/MyFormLibrary";
infoPathFormView.DataBind();

if(infoPathFormView.XmlForm.New)
{
   string fileName = Page.User.Identity.Name;
   infoPathFormView.XmlForm.SaveAs(fileName); // This line throws.
}
else
{
   infoPathFormView.XmlForm.Save();
}

Результатом является следующее исключение и трассировка стека:

Метод или операция не реализованы. в Microsoft.Office.InfoPath.Server.DocumentLifetime.XmlFormHost.SaveAs (String fileUrl) в MyProject.ShowInfoPathForm.SaveButton_Click (Объект отправитель, EventArgs eventArguments)
в System.Web.UI.WebControls.LinkButton.OnClick (EventArgs есть System.Web.UI.WebControls.LinkButton.RaisePostBackEvent (String eventArgument) в System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventArgument) в System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl, String eventArgument)
в System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData) в System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Для ясности я обнаружил, что Microsoft.Office.InfoPath.Server.DocumentLifetime.XmlFormHost является внутренним классом, который наследует от абстрактного XmlForm класса.

  • У кого-нибудь есть идея, почему этот фрагмент кода создает исключение NotImplementedException?
  • Есть ли обходной путь, чтобы можно было сохранить XmlForm с указанным именем файла?

Заранее спасибо !!

Ответы [ 2 ]

1 голос
/ 18 мая 2011

В целях безопасности свойства XsnLocation, XmlLocation и SaveLocation элемента управления XmlFormView должны указывать расположения в том же семействе сайтов, что и пользовательская страница.

0 голосов
/ 19 мая 2011

Обратите внимание, что SaveAs недоступны для серверных форм, как указано в статье, на которую вы ссылались из вопроса: «Доступ к этому типу или члену возможен только из кода, запущенного в формах, открытых в Microsoft Office InfoPath 2007».

Попробуйте использовать SaveLocation (http://msdn.microsoft.com/en-us/library/microsoft.office.infopath.server.controls.xmlformview.savelocation.aspx), чтобы указать имя файла в том же семействе сайтов, что и шаблон.

...