如何使用项目web api在sitecore 6.5中创建媒体项目

时间:2014-10-27 15:43:30

标签: c# sitecore asp.net-web-api sitecore6

我们在项目中使用Sitecore 6.5。

在项目的其中一个站点中,用户必须能够将pdf / doc文件上载到服务器。当他上传时,它会被添加到Web数据库中,因此我们必须将其传输到主数据库。

我试图通过使用Sitecore的web api项目来实现这一目标。

我已经看过this post如何做到这一点。但我无法让它发挥作用。

每当我执行请求时,都会收到内部服务器错误,告诉我找不到所请求文档的布局。

我生成的网址是:

{host}/-/item/v1/?name=45c87793-4b37-40c8-acbc-a3b8f2b0c275&sc_itemid=653a9a07-6ea0-4e9a-8214-6bf3447096ed&sc_database=master&payload=min

据我所知,我认为网址是正确的。

使用以下网址执行get请求确实有效:

{host}/-/item/v1/?sc_itemid=653a9a07-6ea0-4e9a-8214-6bf3447096ed

关于我失踪的想法?

编辑:

以下是我如何调用媒体海报的代码。

var mediaPoster = new MediaPoster("http://{host}/", @"sitecore\admin", "b");

if (pdfStream != null)
     mediaPoster.PostMedia(item.Name, new Guid("{653A9A07-6EA0-4E9A-8214-6BF3447096ED}"), "master", new MemoryStream(pdfStream.ToArray()), ".pdf");

1 个答案:

答案 0 :(得分:0)

还要验证您的配置是否正确。要上传文件,您需要设置安全性。

  <site name="website">
    <patch:attribute name="itemwebapi.mode">StandardSecurity</patch:attribute>
    <patch:attribute name="itemwebapi.access">ReadWrite</patch:attribute>
    <patch:attribute name="itemwebapi.allowanonymousaccess">false</patch:attribute>
  </site>

我刚刚使用该配置进行了测试并且运行正常。

您可以创建一个控制台应用程序,PostMedia类使用此代码:

string HOST = @"http://HOST/";
string ParentID = "{3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1}";         //Must be media library folder/item. this is the root
string mediaFileExt = ".pdf";                                       //you need to specify the extension. You can get that by the content-type returned or the way you find better.

HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://sdn.sitecore.net/upload/sdn5/modules/sitecore%20item%20web%20api/sitecore_item_web_api_developer_guide_sc65-66-usletter.pdf");
HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream mediaStream = httpWebReponse.GetResponseStream();


//create a instance and inform the credentials as well the host
MediaPost mp = new MediaPost(HOST, @"sitecore\admin", "b");

//post the media!
//Important: It needs a Valid Item Name,
//                    a Valid Parent ID under Media Library,
//                    the database, the stream and the extension
mp.PostMedia("DocumentName", new Guid(ParentID), "master", mediaStream, mediaFileExt);

它应该有效,让我们知道你是否还有这个错误......

<强>更新

你知道Sitecore中的showconfig.aspx吗?您可以使用它来查看配置文件的解析方式。 我建议您去那里http://HOST/sitecore/admin/showconfig.aspx,搜索<sites>,看看您的网站是如何设置的。所有补丁属性(mode,access,allowanonumousaccess)应该与上面的配置类似。

只要您的用户是管理员,就应该可以访问medialibrary以及所有其他安全方面。

我刚才想到的另一点。您是否为Sitecore版本获得了正确版本的Item Web Api模块。

1.0

  

Sitecore Item Web API模块v1.0.0 rev.120828已发布   Sitecore Item Web API模块已使用Sitecore CMS 6.5.0进行了测试   rev.120706(Update-5)和CMS 6.6.0 rev.120918(初始版本)。

1.2

  

Sitecore Item Web API 1.2.0 rev。 140128被释放   Sitecore Item Web API模块已使用Sitecore CMS 6.6.0 rev进行了测试。   131211(6.6.0 Update-7)和7.1 rev。 140130(7.1更新-1)。