Ответ 1
Одна из причин этой проблемы заключается в том, что зарегистрированный путь к вложенным ресурсам неверен или ресурса нет. Убедитесь, что файл ресурсов добавлен как Embedded Resource.
Asp.net использует WebResourceAttribute, который должен указывать путь к ресурсу.
Файл ресурсов должен быть добавлен в качестве встроенного ресурса в проект, и путь к нему будет полным пространством имен и именем файла.
Итак, у вас есть следующий ресурс проекта "my.js" в проекте "MyAssembly", путь ресурса будет "MyAssembly.my.js".
Чтобы проверить, какой файл обработчик веб-ресурсов не находит, вы можете расшифровать хеш-код, указанный на URL-адресе WebResource.axd. Ниже приведен пример, как это сделать.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web;
namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
byte[] encryptedData = HttpServerUtility.UrlTokenDecode("encoded hash value");
Type machineKeySection = typeof(System.Web.Configuration.MachineKeySection);
Type[] paramTypes = new Type[] { typeof(bool), typeof(byte[]), typeof(byte[]), typeof(int), typeof(int) };
MethodInfo encryptOrDecryptData = machineKeySection.GetMethod("EncryptOrDecryptData", BindingFlags.Static | BindingFlags.NonPublic, null, paramTypes, null);
try
{
byte[] decryptedData = (byte[])encryptOrDecryptData.Invoke(null, new object[] { false, encryptedData, null, 0, encryptedData.Length });
string decrypted = System.Text.Encoding.UTF8.GetString(decryptedData);
decryptedLabel.Text = decrypted;
}
catch (TargetInvocationException)
{
decryptedLabel.Text = "Error decrypting data. Are you running your page on the same server and inside the same application as the web resource URL that was generated?";
}
}
}
}
Пример исходного кода с помощью пользовательского интерфейса Telerik для ASP.NET AJAX Team Link: http://blogs.telerik.com/aspnet-ajax/posts/07-03-27/debugging-asp-net-2-0-web-resources-decrypting-the-url-and-getting-the-resource-name.aspx
Это должно вернуть URL-путь, по которому aspt.net считает, что встроенный ресурс находится.