Q:

Does a blob currently have a SAS url?

I have a MVC 5 internet application, that uploads files to Azure blob storage. I have currently implemented the code to create a SAS for blobs in a container.
I have a MVC view, that lists many images via the <img src> tag for many different objects. Each of these images are the same image. By that I mean they have the same fileName and are in the same container.
Is it possible to check if a blob already has a current SAS url, and if so, retrieve that SAS url?
Thanks in advance.
EDIT
Here is my code to get a sas url:
public string GetBlobSasUri(string containerName, string fileName)
{
    CloudBlobContainer container = GetCloudBlobContainer(containerName);
    //Get a reference to a blob within the container.
    CloudBlockBlob blob = container.GetBlockBlobReference(fileName);

    //Set the expiry time and permissions for the blob.
    //In this case the start time is specified as a few minutes in the past, to mitigate clock skew.
    //The shared access signature will be valid immediately.
    SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy();
    sasConstraints.SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-5);
    sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddHours(4);
    sasConstraints.Permissions = SharedAccessBlobPermissions.Read;

    //Generate the shared access signature on the blob, setting the constraints directly on the signature.
    string sasBlobToken = blob.GetSharedAccessSignature(sasConstraints);

    //Return the URI string for the container, including the SAS token.
    return blob.Uri + sasBlobToken;
}

If I pass in a containerName with "Test" and a FileName with "Example.png", an SAS is created and returned. If I then pass the same parameters into the function, can I check to see if the FileName already has a SAS created for it, and if so, return the same SAS url?

A:

SAS is Shared Access Signature. That means - it is just digital signature identifying given resource. It is not attached in any way to the resource. SAS is not just some randomly generated token, that is assigned to the resource. SAS is verified during the request - evaluated, signature check, resource check, action check. Thus the service itself (blob service) and the resources in that service (containers, blobs) have no idea of whether SAS exists or not.
Having said that you have couple of possible approaches:

Have cache that stores SAS, where cache key would be your blob URI. Appropriate cache expiry time shall be configured with respect to SAS lifetime
Create SAS for every request (in case you cannot co-relate requests)

Here is MSDN doc on Constructing Shared Access Signature URI.

