従来のASPページ/フォームからリクエストを受け取り、AWSS3で事前に署名された有効期限が切れるURLを返すWCFWebサービスを作成する必要があります。(私はWCFの経験が少しあります。以前は、カスタムJSON形式のオブジェクトを返すことができました。)
次に、フォームの投稿を受け取り、フォームから要求されたファイルの名前を取得し、24時間で有効期限が切れる事前署名されたURLを生成して、それを返す必要があります。参考までに、私は理論がうまくできていません。コード例が必要です。
必要なことをするために以下をマッサージするにはどうすればよいですか?
Amazon S3からのビデオの提供 (これは私が必要としているものに近いようです。私は自分でVBからC#に変換できます。全体のフローを理解するには、このスニペット以上のものが必要です。
=== SampleRestService.svc.cs ===
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
namespace WcfService5
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class SampleRestService : ISampleRestService
{
public IEnumerable<APIContentObject> GetAllUsers()
{
IList<APIContentObject> myAPIContentObject = new List<APIContentObject>();
string strcon = ConfigurationManager.ConnectionStrings["iOSConn"].ConnectionString;
using (SqlConnection conn = new SqlConnection(strcon))
{
conn.Open();
string cmdStr = String.Format("SELECT FirstName, LastName, Email, pword, SignUpDate, enabled FROM Users");
SqlCommand cmd = new SqlCommand(cmdStr, conn);
SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
while (rd.Read())
{
myAPIContentObject.Add(new APIContentObject(rd["FirstName"].ToString(),
rd["LastName"].ToString(),
rd["Email"].ToString(),
rd["pword"].ToString(),
rd["SignUpDate"].ToString(),
rd["enabled"].ToString(),
rd["FirstName"].ToString()));
}
}
conn.Close();
}
return myAPIContentObject;
}
}
[DataContract]
public class APIContentObject
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Excerpt { get; set; }
[DataMember]
public string Content { get; set; }
[DataMember]
public string ImageURL { get; set; }
[DataMember]
public string ThumbnailURL { get; set; }
[DataMember]
public string SluggedURL { get; set; }
[DataMember]
public string FileURL { get; set; }
public APIContentObject(string vName, string vExcerpt, string vContent, string vImageURL, string vThumbnailURL, string vSluggedURL, string vFileURL) //, decimal sal)
{
Name = vName;
Excerpt = vExcerpt;
Content = vContent;
ImageURL = vImageURL;
ThumbnailURL = vThumbnailURL;
SluggedURL = vSluggedURL;
FileURL = vFileURL;
}
}
}
==== iSampleRestService.cs ====
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Web;
namespace WcfService5
{
[ServiceContract]
public interface ISampleRestService
{
[OperationContract]
//attribute for returning JSON format
[WebGet(ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "/json/users")]
//method
IEnumerable<APIContentObject> GetAllUsers();
}
}
==== web.config ====
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="iOSConn" connectionString=" Server=HIDDEN;Database=HIDDEN;User ID=HIDDEN;Password=HIDDEN;Trusted_Connection=False;"/>
</connectionStrings >
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="WcfService5.SampleRestService">
<endpoint address="/" behaviorConfiguration="REST" binding="webHttpBinding"
bindingConfiguration="" contract="WcfService5.ISampleRestService" />
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="REST">
<webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>